पृष्ठभूमि
हेक्स एक दो-खिलाड़ी सार रणनीति गेम है K×K
जो हेक्सागोनल टाइल्स के एक रोम्बस पर खेला जाता है । रोम्बस के दो विपरीत भाग सफेद रंग के होते हैं, और अन्य दो काले, और दो खिलाड़ी, काले और सफेद, अपने रंग का एक टोकन टाइल पर एक टोकन रखने में बदल जाते हैं। जो खिलाड़ी पहले अपने रंग के विपरीत पक्षों के बीच एक पथ का निर्माण करता है, वह विजेता होता है। यह ज्ञात है कि खेल ड्रॉ में समाप्त नहीं हो सकता है, और बोर्ड आकार की परवाह किए बिना पहले खिलाड़ी की जीत की रणनीति है (विवरण के लिए विकिपीडिया पृष्ठ देखें)।
काम
इस चुनौती में, हम बोर्ड के आकार को ठीक करते हैं K = 4
, और बोर्ड का निम्नलिखित ग्रिड के रूप में प्रतिनिधित्व करते हैं। मोटी रेखाएं आसन्न टाइल्स को दर्शाती हैं।
आपका काम पहले खिलाड़ी के लिए एक विजेता रणनीति तैयार करना है, जिसे आप काले या सफेद होने के लिए चुन सकते हैं। इसका मतलब यह है कि विरोधी खिलाड़ी जो भी कानूनी कदम उठाता है, उसके परिणामस्वरूप आपको जीत हासिल करनी चाहिए। आपका इनपुट एक खेल की स्थिति (बोर्ड पर टोकन की व्यवस्था) है, और आपका आउटपुट नीचे दिए गए प्रारूप में एक कानूनी कदम है। यदि आप स्वयं एक विजेता रणनीति खोजना चाहते हैं, तो इस स्पॉइलर को न पढ़ें:
एक संभव जीत की रणनीति की रूपरेखा, यह मानते हुए कि सफेद पहले जाता है। पहला चयन करें 5. उसके बाद, यदि आपके पास नीचे से 5 या नीचे की तरफ कोई रास्ता है या किसी भी बिंदु पर 0 या 1 का चयन करता है, तो 0 या 1 में से जो भी रिक्त हो, का चयन करके जवाब दें। यदि काला 9 या 13 का चयन करता है, तो 10 का चयन करें और फिर 14 या 15 में से जो भी रिक्त हो। अगर काला 9, 13 या 14 का चयन नहीं करता है, तो 9 का चयन करें और 13 या 14 में से जो भी रिक्त हो। यदि काला 14 चुनता है, तो 15. चुनकर उत्तर दें, अगला, रिक्त होने पर 10 का चयन करें; यदि काला 10 चुनता है, तो 11. के साथ उत्तर दें। यदि काला है तो 6 का चयन करता है, 7 के साथ उत्तर देता है, और 2 या 3 में से जो भी रिक्त हो। यदि काला 6 का चयन नहीं करता है, तो उसे चुनें, इसलिए आपके पास 5 से नीचे की पंक्ति में एक रास्ता है।
इनपुट और आउटपुट
आपका इनपुट 16 अक्षरों का एक तार है WBE
, जो सफेद, काले और खाली के लिए खड़ा है। वे बोर्ड की टाइलों का प्रतिनिधित्व करते हैं, जैसा कि ऊपर कहा गया है। आप निम्न में से इनपुट विधि (जो आपकी आउटपुट विधि भी निर्धारित करते हैं) चुन सकते हैं:
- एसटीडीआईएन से इनपुट, एसटीडीयूएसटी के लिए आउटपुट।
- एक कमांड लाइन तर्क के रूप में इनपुट, STDOUT के लिए आउटपुट।
- इनपुट के रूप में 16 एकल-वर्ण कमांड लाइन तर्क, आउटपुट STDOUT के लिए।
- नामित फ़ंक्शन के तर्क के रूप में इनपुट, रिटर्न वैल्यू के रूप में आउटपुट।
आपका आउटपुट उस टाइल का प्रतिनिधित्व करता है, जिस पर आप अपना अगला टोकन रखते हैं, क्योंकि यह स्थानांतरित करने की आपकी बारी है। आप निम्न आउटपुट स्वरूपों में से चुन सकते हैं:
- एक शून्य-आधारित सूचकांक (जैसा कि ऊपर की तस्वीर में इस्तेमाल किया गया है)।
- एक-आधारित सूचकांक।
- आपके
E
द्वारा चुने गएW
याB
आपके द्वारा चुने गए इनपुट स्ट्रिंग के साथ ।
नियम
आपकी रणनीति निर्धारक होनी चाहिए। आपको गेम की स्थिति को सही ढंग से संभालने की आवश्यकता नहीं है जो आपकी रणनीति का उपयोग करके खाली बोर्ड से अगम्य हैं, या उन पदों के लिए जो पहले से ही खिलाड़ी के लिए जीत रहे हैं, और आप उन पर क्रैश कर सकते हैं। इसके विपरीत, आपकी रणनीति का उपयोग करने वाले बोर्ड पर, आपको एक कानूनी कदम वापस करना होगा।
यह कोड-गोल्फ है, इसलिए सबसे कम बाइट गिनती जीतती है। मानक खामियों को अस्वीकार कर दिया जाता है।
परिक्षण
मैंने प्रविष्टियों को मान्य करने के लिए पायथन 3 नियंत्रक लिखा है, क्योंकि यह हाथ से करना बहुत कठिन होगा। आप इसे यहाँ पा सकते हैं । यह पहले तीन इनपुट स्वरूपों और पायथन 3 फ़ंक्शंस का समर्थन करता है (अन्य भाषाओं में फ़ंक्शंस को प्रोग्राम में लपेटना पड़ता है), सभी तीन आउटपुट स्वरूप और दोनों खिलाड़ी। यदि कोई रणनीति नहीं जीत रही है, तो वह खोए हुए गेम को आउटपुट देगी, ताकि आप अपना प्रोग्राम ट्विक कर सकें।
Incorrect response 'WWWWWWWWBBBBBBBB' to message 'WWWWWWWWBBBBBBBB'.
मुझे बहुत पहले जीतना चाहिए था, या मैं गलत हूं?