पहचान
स्विचिंग अनुक्रम को इस तरह परिभाषित किया गया है:
n
एक सर्कल में खड़े लोगों के साथ शुरू करें ( 6
इस उदाहरण के लिए)।
1 2
6 3
5 4
व्यक्ति से शुरू होकर 1
, वह व्यक्ति जो "चुने हुए" व्यक्ति के बाईं ओर है उसे हटा दिया जाता है।
1
6 3
5 4
हटाया गया व्यक्ति निष्कासन विधि को "स्विच" कर सकता है:
- यदि हटाया गया व्यक्ति सम है (जो इस मामले में है), तो अगला हटाया गया व्यक्ति अगले "चुने हुए" व्यक्ति के दाईं ओर होगा।
- यदि हटाया गया व्यक्ति विषम है, तो अगला हटाया गया व्यक्ति अगले "चुने हुए" व्यक्ति के बाईं ओर होगा।
अगला चुना गया व्यक्ति पहले हटाए गए व्यक्ति पर भी निर्भर है।
- यदि हटाया गया व्यक्ति समान है, तो अगला चुना गया व्यक्ति पिछले चुने हुए व्यक्ति के अधिकार में होगा।
- यदि हटाया गया व्यक्ति विषम है, तो ऊपर देखें, लेकिन "दाएं" को "बाएं" से बदलें।
तो अगले चुने हुए व्यक्ति तो है 6
।
अब हम उस व्यक्ति के दाईं ओर हटाते हैं 6
, जो है 5
:
1
6 3
4
क्योंकि 5
विषम है, हटा दिया गया व्यक्ति अब बाईं ओर है। नया चुना हुआ व्यक्ति है 1
।
अब हम हटा देते हैं 3
:
1
6
4
हम इस प्रक्रिया को जारी रखते हैं, जब तक कि हम 1 नंबर के साथ नहीं रहते - इस उदाहरण में, अंतिम संख्या है 1
। तो इसलिए S(6) = 1
।
पहले कुछ नंबर हैं:
n | S(n)
---------
1 | 1
2 | 1
3 | 3
4 | 1
5 | 5
6 | 1
7 | 3
8 | 6
9 | 5
10 | 6
11 | 9
कार्य
आपका कार्य एक प्रोग्राम (या एक फ़ंक्शन) बनाना है जो कम से कम बाइट्स का उपयोग करके दिए गए S(n)
( n
स्विचिंग अनुक्रम में वें नंबर ) देता है n
।
उदाहरण इनपुट और आउटपुट:
1 -> 1
10 -> 6
13 -> 13
आपको सकारात्मक पूर्णांक प्राप्त करने की गारंटी है।
यह कोड-गोल्फ है , इसलिए बाइट्स जीत में सबसे छोटा कोड है!
नोट: आपको खोज की परेशानी से बचाने के लिए कोई OEIS अनुक्रम (क्या?) नहीं है।
2
कभी नहीं रहता है, लेकिन करता है 7
?