गोमोकू या फाइव एक पंक्ति में ग्रिड पर दो खिलाड़ियों द्वारा काले और सफेद पत्थरों के साथ खेला जाने वाला एक बोर्ड गेम है । जो भी 5 पत्थरों को एक पंक्ति में रखने में सक्षम है (क्षैतिज, ऊर्ध्वाधर या विकर्ण) खेल जीतता है।
नियम
इस KoTH में हम Swap2 नियम खेलेंगे, जिसका अर्थ है कि एक खेल में दो चरण होते हैं: प्रारंभिक चरण में दो खिलाड़ी यह निर्धारित करते हैं कि कौन पहले जाता है / कौन काला खेलता है, इसके बाद वे खिलाड़ी के साथ शुरू होने वाले प्रत्येक राउंड में एक पत्थर रखेंगे। जिसने काला उठाया।
पहला भाग
खिलाड़ियों को ए एंड बी और ए खेल खोलने देंगे:
- बोर्ड पर दो काले और एक सफेद पत्थर के एक स्थान
- B निम्नलिखित तीन में से एक चाल चुन सकता है:
- खिलाड़ी बी ने काला खेलने का फैसला किया: प्रारंभिक चरण खत्म हो गया है
- खिलाड़ी बी एक सफेद पत्थर रखने का फैसला करता है और सफेद खेलता है: प्रारंभिक चरण खत्म हो गया है
- खिलाड़ी बी एक काला और एक सफेद पत्थर खेलने का फैसला करता है: ए रंग लेने के लिए जाता है
खेल का चरण
प्रत्येक खिलाड़ी अपने रंग का एक पत्थर बोर्ड पर रखता है, जो उस खिलाड़ी के साथ शुरू होता है जो काला खेलता है, यह तब तक चलता है जब तक कि खेलने के लिए अधिक खाली स्थान नहीं हैं (जिस स्थिति में यह टाई है) या एक खिलाड़ी पत्थरों को खेलने के लिए प्रबंधित करता है पंक्ति (जिस स्थिति में खिलाड़ी जीतता है)।
एक पंक्ति का अर्थ है क्षैतिज, ऊर्ध्वाधर या विकर्ण। एक जीत एक जीत है - इससे कोई फर्क नहीं पड़ता कि खिलाड़ी एक पंक्ति से अधिक स्कोर करने में कामयाब रहा या नहीं।
KoTH खेल के नियम
- प्रत्येक खिलाड़ी दो बार एक दूसरे खिलाड़ी के खिलाफ खेलता है:
- शुरू में यह बेतरतीब ढंग से तय किया जाएगा कि कौन पहले जाता है
- अगले गेम में अंतिम बार खेलने वाला खिलाड़ी पहले जाता है
- एक जीत 2 अंक, एक टाई 1 और नुकसान 0 के बराबर है
- लक्ष्य संभव के रूप में कई अंक स्कोर करने के लिए है
आपका बॉट
इस चुनौती को अधिक से अधिक भाषाओं तक पहुंचाने के लिए संभव इनपुट / आउटपुट स्टड / स्टडआउट (लाइन-आधारित) के माध्यम से होगा । जज प्रोग्राम आपके बॉट के स्टडिन को एक लाइन प्रिंट करके आपके प्रोग्राम को प्रॉम्प्ट करेगा और आपका बॉट स्टडआउट को एक लाइन प्रिंट करेगा ।
एक बार जब आप एक EXIT
संदेश प्राप्त करते हैं, तो आपको जज को मारने से पहले फाइलों को लिखने के लिए आधा सेकंड दिया जाएगा।
अनियमितता
टूर्नामेंटों को सत्यापित करने के लिए न्यायाधीश बीजयुक्त रैंडमाइजेशन का उपयोग करता है और आपके बॉट को भी इसी कारण से करना चाहिए। बॉट को कमांड-लाइन तर्क के माध्यम से एक बीज दिया जाएगा जिसका उपयोग करना चाहिए, कृपया अगले अनुभाग को देखें।
तर्क
बॉट को दो कमांड लाइन तर्क मिले:
- प्रतिद्वंद्वी का नाम
- यादृच्छिकता के लिए बीज
उपयोगकर्ता स्थिति
क्योंकि आपका प्रोग्राम हमेशा प्रत्येक गेम के लिए नया शुरू किया जाएगा, जिसे आप किसी भी जानकारी को बनाए रखने के लिए फ़ाइलों का उपयोग करने की आवश्यकता होगी। आपको अपनी वर्तमान निर्देशिका में किसी भी फाइल को पढ़ने / लिखने या उप-फ़ोल्डर्स बनाने / निकालने की अनुमति है। आपको किसी भी मूल-निर्देशिका में किसी भी फ़ाइल तक पहुँचने की अनुमति नहीं है!
इनपुट / आउटपुट प्रारूप
BOARD
((X,Y),COLOR)
X
Y
COLOR
"B"
"W"
SP
XY
(X,Y)
|
प्रारंभिक चरण में तीन विभिन्न प्रकार के संदेश हैं:
Prompt (judge) -> Answer (bot)
"A" SP "[]" -> XY XY XY
"B" SP BOARD -> "B" | "W" SP XY | XY XY
"C" SP BOARD -> "B" | "W"
- पहला संदेश तीन टुपल्स के लिए पूछता है, पहले दो काले पत्थरों की स्थिति और तीसरा एक सफेद के लिए स्थिति होगी।
- दूसरा संदेश या तो पूछता है:
"B"
-> काला उठाओ"W" SP XY
-> सफेद चुनें और सफेद पत्थर रखेंXY
XY XY
-> दो पत्थर रखें (पहला एक काला और दूसरा एक सफेद)
- आखिरी वाला बस पूछता है कि आप किस रंग से खेलना चाहते हैं
उसके बाद नियमित खेल शुरू हो जाएगा और संदेश बहुत सरल हो जाएंगे
N BOARD -> XY
N
XY
एक अतिरिक्त संदेश है जो उत्तर की उम्मीद नहीं करता है
"EXIT" SP NAME | "EXIT TIE"
NAME
बॉट का नाम कहां है जो जीता। दूसरा संदेश भेजा जाएगा यदि गेम किसी के जीतने के कारण समाप्त नहीं होता है और पत्थरों को रखने के लिए अधिक खाली स्थान नहीं है (इसका मतलब है कि आपके बॉट का नाम नहीं लिया जा सकता है TIE
)।
का प्रारूपण
चूंकि बॉट के संदेशों को बिना किसी रिक्त स्थान के डिकोड किया जा सकता है, सभी रिक्त स्थान को अनदेखा किया जाएगा (उदाहरण के (0 , 0) (0,12)
लिए उसी के रूप में व्यवहार किया जाता है (0,0)(0,12)
)। जज के संदेशों में केवल अलग-अलग वर्गों (यानी जैसा कि ऊपर उल्लेखित है SP
) को अलग करने के लिए एक स्थान होता है , जिससे आप रिक्त स्थान पर रेखा को विभाजित कर सकते हैं।
किसी भी अवैध प्रतिक्रिया के परिणामस्वरूप उस दौर का नुकसान होगा (आप अभी भी एक EXIT
संदेश प्राप्त करेंगे ), नियम देखें।
उदाहरण
यहां वास्तविक संदेशों के कुछ उदाहरण दिए गए हैं:
A []
B [((0,0),"B"),((0,1),"W"),((14,14),"B")]
1 [((0,0),"B"),((0,1),"W"),((1,0),"B"),((1,1),"W"),((14,14),"B")]
न्यायाधीश
आप यहां जज प्रोग्राम पा सकते हैं : बॉट को इसमें जोड़ने के लिए केवल फ़ोल्डर में एक नया फ़ोल्डर बनाएं bots
, अपनी फ़ाइलों को वहां रखें और एक फ़ाइल जोड़ें meta
जिसमें नाम , कमांड , तर्क और एक ध्वज 0/1 (अक्षम / सक्षम स्टादर ) प्रत्येक एक अलग लाइन पर।
एक टूर्नामेंट चलाने के लिए ./gomoku
और एक एकल बॉट रन को डिबग करने के लिए ./gomoku -d BOT
।
नोट: आप Github रिपॉजिटरी में जज को सेटअप करने और उसका उपयोग करने के बारे में अधिक जानकारी पा सकते हैं। तीन उदाहरण बॉट ( हास्केल , पायथन और जावास्क्रिप्ट ) भी हैं।
नियम
- बॉट के प्रत्येक परिवर्तन पर * टूर्नामेंट फिर से शुरू होगा और सबसे अधिक अंक जीतने वाला खिलाड़ी (टाई-ब्रेकर पहले जमा करेगा)
- जब तक वे एक आम रणनीति नहीं निभाते हैं तब तक आप एक से अधिक बॉट जमा कर सकते हैं
- आपको अपनी निर्देशिका के बाहर फ़ाइलों को छूने की अनुमति नहीं है (उदाहरण के लिए अन्य खिलाड़ी की फ़ाइलों में हेरफेर)
- यदि आपका बॉट क्रैश हो जाता है या एक अवैध प्रतिक्रिया भेजता है, तो वर्तमान गेम समाप्त हो जाता है और आप उस दौर को खो देते हैं
- जबकि जज (वर्तमान में) प्रति दौर की समय-सीमा को लागू नहीं करता है, आपको सलाह दी जाती है कि समय कम रखने के लिए क्योंकि यह सभी प्रस्तुतियाँ का परीक्षण करने के लिए संभव हो सकता है **
- जज प्रोग्राम में गालियां देना खामियों के रूप में गिना जाता है
* आपको अपने बॉट को सीधे bots
निर्देशिका में प्रस्तुत करने के लिए (और संभावित रूप से संशोधित util.sh
) गितुब का उपयोग करने के लिए प्रोत्साहित किया जाता है !
** यदि यह एक समस्या बन जाती है तो आपको सूचित किया जाएगा, मैं 500ms से नीचे कुछ भी कहूंगा (यह बहुत है!) अभी के लिए ठीक होना चाहिए।
चैट
यदि आपके कोई प्रश्न हैं या इस KoTH के बारे में बात करना चाहते हैं, तो चैट में शामिल होने के लिए स्वतंत्र महसूस करें !