कुछ बाइनरी अनुक्रम पर विचार करें , उदाहरण के लिए, 1
और 2
:
1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1 ...
चलिए लिखते हैं कि रन की लंबाई:
1, 2, 1, 1, 2, 2, 1, 2, 1, 2, 2, 1 ...
_ _ ____ ____ _ _ _ ____
1, 1, 2, 2, 1, 1, 1, 2, ...
इस मामले में हम एक और बाइनरी अनुक्रम प्राप्त करते हैं। बेशक, यह गारंटी नहीं है (जैसे अगर हमने प्रक्रिया को दोहराया, तो तीसरा रन होगा 3
), लेकिन मान लें कि हम करते हैं।
अब सवाल यह है कि क्या हम एक ऐसा क्रम खोज सकते हैं जो इस प्रकार की रन-लंबाई एन्कोडिंग को कई बार लागू करने से हमें मूल अनुक्रम वापस दे सके? 1 की एक चक्र-लंबाई (यानी इस परिवर्तन का एक निश्चित बिंदु) के लिए, हम ओल्डेनबर्गर-कोलाकोस्की अनुक्रम (OEIS प्रविष्टि A0000002 ) पाते हैं :
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, ...
(वास्तव में एक और उपाय है: हम अग्रणी को भी छोड़ सकते हैं 1
।)
लंबाई -2 के चक्र के बारे में क्या? यह भी संभव है! निम्नलिखित दो क्रम रन लंबाई की एक-दूसरे की सूची है:
1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, ...
2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, ...
(ये OEIS प्रविष्टियाँ A025142 और A025143 हैं । यह एकमात्र समाधान है।)
क्या हम लंबाई 3 का चक्र पा सकते हैं? निश्चित रूप से, यहां प्रत्येक अनुक्रम अगले की रन-लंबाई एन्कोडिंग है (और तीसरा वाला पहले की रन-लंबाई एन्कोडिंग है):
1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, ...
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, ...
2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, ...
इस मामले में एक अन्य समाधान है। यह पता चला है कि हम हर चक्र की लंबाई के लिए ऐसा चक्र पा सकते हैं। वास्तव में, लंबाई एन के विभिन्न चक्रों की संख्या OEIS प्रविष्टि A001037 द्वारा दी गई है (यह एक चक्र में किस क्रम को सबसे पहले माना जाता है, की मनमानी पसंद नहीं गिना जा रहा है)।
मजेदार तथ्य: जैसा कि यह प्रतीत नहीं होता है, यह चुनौती जटिल मानचित्र का अध्ययन करने से प्रेरित थी f(z) = z - 1/z
। जो कोई भी यह पता लगाता है कि इस चुनौती से उस नक्शे का क्या लेना-देना है।
चुनौती
एक चक्र की लंबाई k > 0
और एक अनुक्रम लंबाई को देखते हुए n > 0
, अलग-अलग (अनंत) द्विआधारी अनुक्रमों के पहले n
शब्दों को आउटपुट करते हैं k
जो उपरोक्त रन-लंबाई परिवर्तन के तहत एक चक्र बनाते हैं। यदि कई चक्र मौजूद हैं, तो आप उनमें से किसी एक को आउटपुट कर सकते हैं। यह आप पर निर्भर है कि किस क्रम में चक्र को शुरू करना है, और किस दिशा में चक्र जाता है (इसलिए आप या तो उन्हें ऐसे आउटपुट कर सकते हैं कि प्रत्येक अनुक्रम अगले का वर्णन करता है, या ऐसा है कि प्रत्येक अनुक्रम पिछले एक का वर्णन करता है, चक्रीय रूप से)।
आप STDIN (या निकटतम विकल्प), कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से इनपुट ले रहे हैं और STDOUT (या निकटतम विकल्प), फ़ंक्शन रिटर्न मान या फ़ंक्शन (आउट) पैरामीटर के माध्यम से परिणाम लिख सकते हैं।
आउटपुट किसी भी सुविधाजनक, अस्पष्ट, नेस्टेड सूची प्रारूप में हो सकता है, जैसे कि बाहरी आयाम है k
और आंतरिक आयाम है n
।
मानक कोड-गोल्फ नियम लागू होते हैं।
अतिरिक्त उदाहरण
यहाँ कुछ उदाहरण हैं। लेकिन जैसा कि मैंने कहा, समाधान अद्वितीय नहीं हैं, इसलिए आपके अपने समाधान भिन्न हो सकते हैं और फिर भी सही हो सकते हैं। शायद ये आपको एक समाधान के साथ आने में मदद करेंगे। प्रत्येक उदाहरण k n
अनुक्रमों के बाद होता है, जैसे कि प्रत्येक पंक्ति अगले (चक्रीय रूप से) का वर्णन करती है:
4 20
1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2
2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1
2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1
1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1
5 6
2, 2, 1, 2, 2, 1
1, 1, 2, 2, 1, 2
2, 1, 2, 2, 1, 1
1, 1, 2, 1, 1, 2
2, 1, 2, 2, 1, 2
8 20
2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2
1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1
2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2
2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2
1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1
2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2
1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1
2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1
13 50
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2
2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1
1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1
1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1
1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1
1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 2
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1
1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 1, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1, 2, 1, 1
ध्यान दें कि पिछले दो आउटपुट में सभी लाइनें अलग-अलग नहीं हैं, हालांकि वे अंततः n
बड़े पैमाने पर होते हैं।