परिचय
बेशक, हमें बहुत सी अनुक्रम चुनौतियां मिली हैं , इसलिए यहां एक और एक है।
किम्बरलिंग अनुक्रम ( A007063 ) निम्नानुसार है:
1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28, 22, ...
यह सामान्य पुनरावृत्ति को बदलकर निर्मित होता है:
[1] 2 3 4 5 6 7 8
अनुक्रम का पहला शब्द है 1
। उसके बाद, हम अनुक्रम को फेरबदल करते हैं जब तक कि बाईं ओर सभी शब्दों का उपयोग नहीं किया जाता है। फेरबदल का पैटर्न है right - left - right - left - ...
। चूंकि बाईं ओर कोई शब्द नहीं हैं 1
, इसलिए कोई फेरबदल नहीं है। हम निम्नलिखित प्राप्त करते हैं:
2 [3] 4 5 6 7 8 9
I वें पुनरावृत्ति पर, हम i वें आइटम को छोड़ देते हैं और इसे हमारे अनुक्रम में डालते हैं। यह 2 पुनरावृत्ति है, इसलिए हम 2 आइटम को छोड़ देते हैं । अनुक्रम बन जाता है 1, 3
:। हमारे अगले पुनरावृत्ति के लिए, हम ऊपर दिए गए पैटर्न के साथ वर्तमान पुनरावृत्ति में फेरबदल करने जा रहे हैं। हम पहली अप्रयुक्त वस्तु को i वें आइटम के दाईं ओर ले जाते हैं । ऐसा होता है 4
। हम इसे अपनी नई यात्रा में शामिल करेंगे:
4
अब हम पहली अप्रयुक्त वस्तु को i वें आइटम के बाईं ओर ले जा रहे हैं । यह वह जगह है 2
। हम इसे अपनी नई यात्रा में शामिल करेंगे:
4 2
चूँकि i th आइटम के बाईं ओर कोई आइटम नहीं हैं , इसलिए हम शेष अनुक्रम को नए पुनरावृत्ति में जोड़ देंगे:
4 2 [5] 6 7 8 9 10 11 ...
यह हमारी तीसरी पुनरावृत्ति है, इसलिए हम 3rd आइटम को छोड़ देंगे , जो है 5
। यह हमारे अनुक्रम में तीसरा आइटम है:
1, 3, 5
अगली पुनरावृत्ति प्राप्त करने के लिए, बस प्रक्रिया को दोहराएं। अगर यह स्पष्ट नहीं है तो मैंने एक जिफ़ बनाया है:
वास्तविक पोस्ट लिखने से gif मुझे अधिक समय लगा
कार्य
- एक गैर-नकारात्मक पूर्णांक n को देखते हुए , अनुक्रम के पहले n शब्दों को आउटपुट करें
- आप एक समारोह या एक कार्यक्रम प्रदान कर सकते हैं
- यह कोड-गोल्फ है , इसलिए कम से कम बाइट्स जीत के साथ जमा करना!
परीक्षण के मामलों:
Input: 4
Output: 1, 3, 5, 4
Input: 8
Output: 1, 3, 5, 4, 10, 7, 15, 8
Input: 15
Output: 1, 3, 5, 4, 10, 7, 15, 8, 20, 9, 18, 24, 31, 14, 28
नोट: आउटपुट में अल्पविराम आवश्यक नहीं है। उदाहरण के लिए आप नई सूची का उपयोग कर सकते हैं, या सूची का उत्पादन कर सकते हैं, आदि।