परिचय
बेशक, हमें बहुत सी अनुक्रम चुनौतियां मिली हैं , इसलिए यहां एक और एक है।
किम्बरलिंग अनुक्रम ( 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
नोट: आउटपुट में अल्पविराम आवश्यक नहीं है। उदाहरण के लिए आप नई सूची का उपयोग कर सकते हैं, या सूची का उत्पादन कर सकते हैं, आदि।
