यहां विचार लगभग दोहराए जाने वाले पैटर्न का उत्पादन करने का है । यही है, अनुक्रम को कुछ क्षणों की पुनरावृत्ति से बचने के लिए अंतिम क्षण में परिवर्तन का निर्माण किया जा रहा है। एए और एबीए प्रकार के परिणामों से बचा जाना चाहिए (जहां बी अब ए से अधिक नहीं है)।
उदाहरण:
मैं अपने विवरण को स्पष्ट करने के लिए सभी छोटे उदाहरणों को सूचीबद्ध करके आगे बढ़ूंगा। 0 से शुरू करते हैं।
मान्य: ० अमान्य: 00 (AA पैटर्न) मान्य: ०१ अमान्य: 010 (ABA पैटर्न) अमान्य: 011 (AA पैटर्न) मान्य: 012 मान्य: 0120 अमान्य: 0121 (ABA पैटर्न) अमान्य: 0122 (AA पैटर्न) अमान्य: 01200 (AA पैटर्न) अमान्य: 01201 (ABA पैटर्न; 01-2-01) अमान्य: 01202 (ABA पैटर्न) मान्य: 01203
अब, मैं दृढ़ता से मानता हूं कि 4
इसकी कभी आवश्यकता नहीं है, हालांकि मेरे पास कोई सबूत नहीं है, क्योंकि मुझे आसानी से सैकड़ों वर्णों के अनुक्रम मिल गए हैं जो केवल उपयोग करते हैं 0123
। (यह संभवतः बारीकी से संबंधित है कि केवल तीन वर्णों के लिए अनंत तारों की आवश्यकता होती है जिनके पास कोई एए पैटर्न नहीं है। इस पर एक विकिपीडिया पृष्ठ है।)
इनपुट आउटपुट
इनपुट एक एकल, सकारात्मक, गैर-शून्य पूर्णांक है n
। आप ऐसा मान सकते हैं n <= 1000
।
आउटपुट एक n
आवर्ती अनुक्रम है जिसमें कोई भी अनुगमन नहीं है जो निषिद्ध पैटर्न (AA या ABA) से मेल खाता है।
नमूना इनपुट और आउटपुट
>>> 1 0 >>> 2 01 >>> 3 012 >>> 4 0120 >>> 5 01203 >>> 50 01203102130123103201302103120132102301203102132012
नियम
- केवल पात्रों
0123
की अनुमति है। - बी नहीं रह गया है की तुलना में ए यह स्थिति जहां से बचना है
012345
द्वारा अपनाई जाने वाली है6
क्योंकि0123451
यह है:1-2345-1
। दूसरे शब्दों में, अनुक्रम तुच्छ और अविच्छिन्न होगा। n
हार्ड-कोडिंग को छोड़कर , वांछित किसी भी विधि के माध्यम से इनपुट किया जा सकता है ।- आउटपुट या तो एक सूची या एक स्ट्रिंग हो सकता है, जिसके आधार पर यह आसान है।
- कोई क्रूर बल नहीं ; रन का समय मिनटों के क्रम पर होना चाहिए, वास्तव में धीमी गति से मशीन पर अधिकतम एक घंटे के लिए
n=1000
। (यह उन समाधानों को अयोग्य ठहराने के लिए है, जो केवल-के सभी-n
परिकलन क्रमों के माध्यम से लूप करते हैं{0,1,2,3}
, ताकि ट्रिक और इसी तरह की चालों को रोक दिया जाए।) - मानक खामियों को हमेशा की तरह खारिज कर दिया जाता है।
- स्कोरिंग बाइट्स में है। ये हैकोड गोल्फ, इसलिए सबसे छोटी प्रविष्टि जीतती है (शायद - बोनस देखें)।
- बोनस: प्रत्येक चरण पर सबसे कम अनुमत अंक चुनें। तो
1
और3
क्रम में अगला अंकों के लिए संभव विकल्प हैं, लेने1
। अपने स्कोर से 5 बाइट घटाएं । हालाँकि, नीचे दिए गए नोट पर ध्यान दें।
ध्यान दें!
डेड-एंड संभव है। आपके कार्यक्रम या समारोह को इनसे बचना चाहिए। यहाँ एक उदाहरण है:
स्टंप: 0120310213012310320130210312013210230120310213201230210312013023103201230213203102301203210231201302103123013203102130120321023013203123021032012310213012031023013203123021320123102130120 स्टंप: 0120310213012310320130210312013210230120310213201230210312013023103201230213203102301203210231201302103123013203102130120321023013203123021032012310213012031023013203123021320123102130123 स्टंप: 012031021301231032013021031201321023012031021320123021031201302310320123021320310230120321023120130210312301320310213012032102301320312302103201231021301203102301320312302132012310320 स्टंप: 012031021301231032013021031201321023012031021320123021031201302310320123021320310230120321023120130210312301320310213012032102301320312302103201231021301203102301320312302132012310321301203102130
इनमें से प्रत्येक क्रम को आगे (बिना उपयोग किए 4
) बढ़ाया नहीं जा सकता । लेकिन यह भी ध्यान दें कि पहले दो और दूसरे दो के बीच एक महत्वपूर्ण अंतर है। मैं इसे X
स्पष्ट करने के लिए साझा प्रारंभिक अनुवर्ती को प्रतिस्थापित करूँगा ।
स्टंप: X2130120 स्टंप: X2130123 स्टंप: X320 स्टंप: X321301203102130
अंतिम दो अंक X
हैं 10
, इसलिए अगले अंक के लिए एकमात्र संभव विकल्प हैं 2
और 3
। चुनना 2
एक ऐसी स्थिति की ओर जाता है जहां अनुक्रम को समाप्त करना होगा । लालची एल्गोरिथ्म यहां काम नहीं करेगा । (बिना पीछे किए, वैसे भी नहीं।)
n
, लेकिन यह देखते हुए कि मेरे कार्यक्रम में जो स्टंप लगता है, वह हर बार औसतन 10 अंकों का हो जाता है, मुझे पूरा यकीन है कि एक अनंत क्रम मौजूद है। मुझे यकीन नहीं है कि कैसे अर्ध-लालची एल्गोरिदम को मनमाने ढंग से बड़े दृश्यों के लिए परीक्षण किया जा सकता है। मैं आवश्यकता को n
1000 तक सीमित कर सकता हूं और उच्चतर की चिंता नहीं कर सकता n
।
AA
है कि वास्तव में प्रकार है ABA
जहां B
खाली है। यह शायद कुछ समाधानों को कारगर बनाने में मदद कर सकता है।
n
? यदि कोई व्यक्ति एक अर्ध-लालची एल्गोरिथ्म देता है, तो आप कैसे जांचेंगे कि यह बहुत बड़ी लंबाई के लिए समस्याओं में नहीं चलता है? सामान्य समस्या एक दिलचस्प है, और मैं पैटर्न परिहार पर कुछ भी नहीं पा रहा हूं जहां हम पैटर्न के हिस्से की लंबाई को सीमित करते हैं। अगर कोई सामान्य नुस्खा का उत्पादन कर सकता है, तो मुझे उम्मीद है कि सबसे अच्छा तरीका होगा।