स्टर्न-Brocot अनुक्रम एक Fibonnaci की तरह अनुक्रम जो के रूप में निर्माण किया जा सकता इस प्रकार है:
- के साथ अनुक्रम प्रारंभ
s(1) = s(2) = 1 - काउंटर सेट करें
n = 1 s(n) + s(n+1)अनुक्रम में जोड़ेंs(n+1)अनुक्रम में जोड़ें- वृद्धि
n, चरण 3 पर वापस लौटें
यह इसके बराबर है:
अन्य गुणों के बीच, स्टर्न-ब्रोकोट अनुक्रम का उपयोग हर संभव सकारात्मक तर्कसंगत संख्या उत्पन्न करने के लिए किया जा सकता है। हर तर्कसंगत संख्या ठीक एक बार उत्पन्न होगी, और यह हमेशा अपनी सरलतम शर्तों में दिखाई देगी; उदाहरण के लिए, 1/3अनुक्रम में 4 वाँ परिमेय संख्या है, लेकिन समतुल्य संख्याएँ 2/6, 3/9आदि बिल्कुल नहीं दिखाई देंगी।
हम nth रेशनल नंबर को परिभाषित कर सकते हैं r(n) = s(n) / s(n+1), जहाँ s(n)nth स्टर्न-ब्रोकोट नंबर है, जैसा कि ऊपर वर्णित है।
आपकी चुनौती एक प्रोग्राम या फ़ंक्शन लिखना है जो स्टर्न-ब्रोकोट अनुक्रम का उपयोग करके उत्पन्न एनटी तर्कसंगत संख्या को आउटपुट करेगा।
- ऊपर वर्णित एल्गोरिदम 1-अनुक्रमित हैं; यदि आपकी प्रविष्टि 0-अनुक्रमित है, तो कृपया अपने उत्तर में बताएं
- वर्णित एल्गोरिदम केवल दृष्टांत उद्देश्यों के लिए हैं, आउटपुट को किसी भी तरह से प्राप्त किया जा सकता है जो आपको पसंद है (हार्ड-कोडिंग के अलावा)
- इनपुट STDIN, फ़ंक्शन मापदंडों या किसी अन्य उचित इनपुट तंत्र के माध्यम से हो सकता है
- Ouptut STDOUT, कंसोल, फ़ंक्शन रिटर्न मान या किसी अन्य उचित आउटपुट स्ट्रीम के लिए हो सकता है
- आउटपुट के रूप में एक स्ट्रिंग के रूप में होना चाहिए
a/b, जहांaऔरbस्टर्न-Brocot अनुक्रम में प्रासंगिक प्रविष्टियां होती हैं। आउटपुट से पहले अंश का मूल्यांकन अनुमन्य नहीं है। उदाहरण के लिए, इनपुट के लिए12, आउटपुट होना चाहिए2/5, नहीं0.4। - मानक खामियों को अस्वीकार कर दिया जाता है
यह कोड-गोल्फ है , इसलिए बाइट्स में सबसे छोटा जवाब जीत जाएगा।
परीक्षण के मामलों
यहां परीक्षण के मामले 1-अनुक्रमित हैं।
n r(n)
-- ------
1 1/1
2 1/2
3 2/1
4 1/3
5 3/2
6 2/3
7 3/1
8 1/4
9 4/3
10 3/5
11 5/2
12 2/5
13 5/3
14 3/4
15 4/1
16 1/5
17 5/4
18 4/7
19 7/3
20 3/8
50 7/12
100 7/19
1000 11/39
OEIS प्रविष्टि: A002487
उत्कृष्ट क्रमिक वीडियो अनुक्रम की चर्चा करते हुए: अनंत अंश
True/2एक वैध अंश नहीं है (जहाँ तक मेरा संबंध है)। एक तरफ के रूप में, Trueहमेशा नहीं है 1- कुछ भाषाएं -1बिटवाइन ऑपरेटरों को लागू करते समय संभावित गलतियों से बचने के लिए उपयोग करती हैं । [उद्धरण वांछित]
Trueइसके बराबर है 1और True/2होगा 1/2।

Trues के बजाय s का उपयोग कर सकता है1?