पृष्ठभूमि
आप खुद को एक आयामी भूलभुलैया में खो जाने के लिए जागते हैं! एक रहस्यमय जिन्न (या कुछ) प्रकट होता है और बताता है कि निकास आपके सामने है, लेकिन आपके और बाहर निकलने के बीच चुनौतियों की एक श्रृंखला है। जैसा कि आप आगे भटकते हैं आप महसूस करते हैं कि सभी तथाकथित चुनौतियां केवल बंद दरवाजे हैं। आप पहले एक टी-आकार के की-होल के साथ एक दरवाजा देखते हैं, और इस तरह की कोई चाबी नहीं होने के कारण, अपने कदमों को वापस करें, एक T
आकृति के साथ एक चाबी की तलाश करें ।
निराश होकर, आप जमीन पर चाबियों का एक सूप पाते हैं, जिनमें से कोई भी आपके द्वार पर आए दरवाजे से मेल नहीं खाता है। प्रतिभा (या मूर्खता) के कुछ स्ट्रोक से, आप तय करते हैं कि निचली-केस- t
शेप्ड कुंजी स्लॉट में फिट करने में सक्षम हो सकती है यदि आप इसे वहां पर्याप्त रूप से जाम करते हैं। जैसे ही आप t
हाथ में लोअर-केस की चाबी के साथ दरवाजे पर पहुंचते हैं , T
छेद हरा हो जाता है और दरवाजा आपके सामने घुल जाता है।
एक नीचे, कई और जाने के लिए ...
चुनौती
इस चुनौती का लक्ष्य यह चिह्नित करना है कि आप भूलभुलैया से बाहर निकलने के लिए कितने कदम उठाते हैं।
इस चुनौती का इनपुट भूलभुलैया है: एक स्ट्रिंग जिसमें केवल वर्ण हैं [A-Za-z^$ ]
। शब्दावली:
^
- प्रारंभ स्थान। इनपुट में बिल्कुल एक होगा^
।$
- निकास (स्वतंत्रता!)। इनपुट में बिल्कुल एक होगा$
।[A-Z]
- बड़े अक्षर दरवाजे को दर्शाते हैं। यदि आप पहले से ही अपेक्षित कुंजी एकत्र कर चुके हैं तो आप केवल इस दरवाजे से जा सकते हैं।[a-z]
- लोअर केस लेटर्स कुंजियों को दर्शाते हैं। आप इन कुंजियों को उस स्थान पर चलाकर एकत्रित करते हैं जिसमें कुंजी है।
इनपुट में प्रत्येक बड़े अक्षर में से एक होगा। इसका मतलब है कि कुल दरवाजे 0-26 समावेशी के बीच होंगे।
हर बंद दरवाजे के [A-Z]
पास एक समान रूप से कम केस की चाबी होगी [a-z]
। इनपुट में कोई भी स्थान ( ) हो सकता है ।
सभी दरवाजे शुरुआत के दाईं ओर और निकास के बाईं ओर होंगे। इस प्रकार कोई भी शानदार दरवाजे नहीं होंगे। सभी इनपुट सॉल्व होंगे।
इस चुनौती के लिए आउटपुट एक संख्या होगी, जो भूलभुलैया से बाहर निकलने के लिए उठाए गए कदमों की संख्या है।
कलन विधि
इस मनहूस जगह से बाहर निकलने का आपका तरीका इस प्रकार है:
- शुरुआत में शुरू करें (
^
) और आगे बढ़ें (दाएं) आपके सामने आने वाली किसी भी कुंजी को इकट्ठा करते हुए। - जब आप एक दरवाजे के पार आते हैं, अगर आपके पास सही चाबी है, तो आप दरवाजे पर आगे बढ़ते हैं। यदि आपके पास सही कुंजी नहीं है, तो आप पीछे की ओर (बाएं) एकत्रित कुंजियों को चलते हैं जब तक कि आप सबसे हाल के दरवाजे की कुंजी नहीं ढूंढ लेते हैं जो आप खोल नहीं सकते।
- एक बार जब आप वर्तमान परेशानी वाले दरवाजे के लिए कुंजी एकत्र करते हैं, तो आप दाईं ओर मुड़ते हैं और आगे बढ़ते हैं।
- इस प्रक्रिया को तब तक दोहराएं जब तक आप बाहर निकलने के लिए कदम नहीं उठाते (
$
)।
अनुभवी गोल्फर समझेंगे कि आपके कोड को इस विशिष्ट एल्गोरिथ्म को लागू करने की आवश्यकता नहीं है क्योंकि यह उसी परिणाम को आउटपुट करता है जैसे कि आपने इस एल्गोरिथम को चलाया था।
गिनती
हर बार जब आप एक वर्ग से दूसरे वर्ग में कदम रखते हैं, तो एक कदम के रूप में गिना जाता है। 180 no मोड़ना कोई अतिरिक्त कदम नहीं है। आप अपेक्षित कुंजी के बिना एक दरवाजे पर आगे नहीं बढ़ सकते। आपको इसे लेने के लिए एक कुंजी पर कदम रखना चाहिए, और जीतने के लिए निकास पर कदम रखना चाहिए। आपकी पहली चाल के बाद, स्टार्ट स्पेस ( ^
) किसी अन्य नियमित स्थान की तरह ही व्यवहार करता है।
उदाहरण
इन उदाहरणों में मैंने मानव-पठनीयता के लिए रिक्त स्थान को रेखांकित किया है।
इनपुट है _a_^_A__$__
। आउटपुट है 11
। आप 1
कदम आगे बढ़ाते हैं, ध्यान दें कि आपके पास A
दरवाजे के लिए कोई चाबी नहीं है , और फिर चेहरे के बारे में। आप पीछे की ओर चलते हैं जब तक कि आप उस स्थान पर कब्जा नहीं कर लेते हैं a
( 3
पीछे की ओर कदम, अब 4
कुल)। आप तब तक आगे बढ़ते हैं जब तक कि आप बाहर निकलने वाले स्थान पर कब्जा नहीं कर लेते ( 7
आगे, 11
कुल)।
इनपुट है b__j^__a_AJB_$
। आउटपुट 41
आप भूलभुलैया के पीछे दो अलग-अलग यात्राएं करते हैं, एक j
कुंजी प्राप्त करने के लिए , और अगले एक b
कुंजी प्राप्त करने के लिए ।
इनपुट है __m__t_^__x_T_MX_$____
। आउटपुट है 44
। x
कुंजी प्राप्त करने के लिए आप कोई अतिरिक्त यात्रा नहीं करेंगे , जैसा कि आपने इसे शुरू से ही अपने रास्ते पर उठाया था T
।
इनपुट है g_t_^G_T$
। आउटपुट है 12
। आप G
एक कुंजी के बिना अंतरिक्ष पर नहीं जा सकते , और तुरंत चेहरे के बारे में। आप भाग्यशाली हैं कि t
कुंजी के रास्ते पर कुंजी को उठाओ g
, और इस तरह से स्वतंत्रता के लिए अपने रास्ते पर दोनों दरवाजे खोलें।
इनपुट है _^_____$
। आउटपुट है 6
। वह तो आसान था।
मैं / हे दिशानिर्देश और जीत मानदंड
मानक I / O नियम लागू होते हैं। यह एक कोड-गोल्फ चुनौती है।
A
है bA^aB$
कि या तो शानदार नहीं होगा। ;)