नोट: यह चुनौती वर्तमान में मृत है, क्योंकि मैं एक मैच चलाने के लिए आवश्यक भाषाओं को स्थापित करने में असमर्थ हूं। यदि किसी और के पास इसे करने का समय और रुचि है, तो मैं विरोध नहीं करता।
लीडरबोर्ड के लिए पोस्ट के नीचे देखें।
यह एक अर्ध-सहकारी राजा-की-पहाड़ी चुनौती है, जहां बॉट द्वि-आयामी ग्रिड ग्राफ के माध्यम से पथ का निर्माण करते हैं। सबसे अधिक ट्रैफ़िक वाले नोड्स को नियंत्रित करने वाला बॉट विजेता है। हालांकि, यह वास्तव में एक संपर्क पथ का निर्माण करने के लिए एक से अधिक बॉट के संसाधन लेता है, इसलिए बॉट्स को एक साथ - कुछ हद तक काम करना होगा।
गेमप्ले
निम्नलिखित में, N > 0
खेलने में बॉट की संख्या होने दें ।
ग्रिड
खेल आकार के दो-आयामी पूर्णांक ग्रिड पर खेला जाता है , जिसका निचला बाईं ओर समन्वय होता है । प्रत्येक समन्वय के साथ तीन निर्देशांक के लिए बाहर जाने वाले किनारों है , और यह ऊपर है, जहां -coordinates सापेक्ष लिया जाता है । इसका मतलब है कि ग्रिड पूर्व और पश्चिम किनारों पर घूमता है। हर निचला समन्वय एक स्रोत है , और प्रत्येक शीर्ष समन्वय एक सिंक है ।⌊4/3N2⌋ × ⌊4/3N2⌋
(0,0)
(x,y)
0 ≤ y < ⌊4/3N2⌋-1
(x-1,y+1)
(x,y+1)
(x+1,y+1)
x
⌊4/3N2⌋
(x,0)
(x,⌊4/3N2⌋-1)
निम्न चित्र एक 8 × 8
ग्रिड दिखाता है।
ग्राफ़ का प्रत्येक शीर्ष या तो निष्क्रिय है , सक्रिय है , या टूटा हुआ है । सभी कोने निष्क्रिय शुरू होते हैं, और बॉट्स द्वारा सक्रिय किया जा सकता है, जो तब उनके मालिक होंगे। इसके अलावा, बॉट्स कोने को तोड़ सकते हैं, और उनकी मरम्मत नहीं की जा सकती है।
आदेश चालू करें
एक मोड़ में विनाश चरण और सक्रियण चरण होता है । विनाश चरण में, प्रत्येक बॉट एक निष्क्रिय शीर्ष को तोड़ सकता है। तब से यह शीर्ष टूट गया है, और किसी के द्वारा सक्रिय नहीं किया जा सकता है। सक्रियण चरण में, प्रत्येक बॉट एक निष्क्रिय शीर्ष को सक्रिय कर सकता है। तब से, वे उस शीर्ष के मालिक हैं, और इसे किसी और द्वारा पुन: सक्रिय नहीं किया जा सकता है। कई बॉट्स एक ही शीर्ष के मालिक हो सकते हैं, अगर वे सभी एक ही मोड़ पर इसे सक्रिय करते हैं। प्रत्येक चरण में, शीर्ष चयन एक साथ किया जाता है।
स्कोरिंग
एक दौर बिल्कुल मोड़ के लिए रहता है। इसके बाद, इस प्रकार गोल किया जाता है। प्रत्येक सक्रिय स्रोत शीर्ष से, हम प्रदर्शन करते हैंN2
N
कई बार सक्रिय लंबवत के साथ एक यादृच्छिक गहराई-पहली खोज करते हैं (जिसका अर्थ है कि प्रत्येक शीर्ष के बच्चे यादृच्छिक क्रम में जाते हैं)। यदि कोई स्रोत स्रोत से किसी सिंक तक पाया जाता है, तो उस पथ के सभी कोने के लिए, शीर्ष के प्रत्येक मालिक को एक बिंदु मिलता है।
पूरा खेल 100 राउंड तक चलता है, और कुल मिलाकर सबसे अधिक अंकों के साथ बॉट विजेता है। यदि स्कोर बहुत अधिक है, तो मैं इस संख्या को बढ़ा सकता हूं।
अतिरिक्त नियम
- नियंत्रक या अन्य प्रस्तुतियाँ के साथ कोई खिलवाड़ नहीं।
- प्रति प्रतियोगी अधिकतम एक जमा पर।
- कोई बाहरी संसाधन, एक निजी पाठ फ़ाइल को छोड़कर, खेल की शुरुआत में साफ मिटा दिया।
- विशिष्ट विरोधियों को हरा या समर्थन करने के लिए अपने बॉट को डिज़ाइन न करें।
- अपने बॉट को संकलित करने और चलाने के लिए आदेश प्रदान करें। डेबियन लिनक्स के लिए स्वतंत्र रूप से उपलब्ध कोई भी कंपाइलर / दुभाषिया स्वीकार्य है।
नियंत्रक
नियंत्रक पायथन 3 में लिखा गया है, और गिटहब में पाया जा सकता है । विस्तृत निर्देशों के लिए README फाइल देखें। आपको आरंभ करने के लिए यहां एक एपीआई है:
- बॉट्स प्रत्येक दौर की शुरुआत में शुरू होते हैं, और राउंड के अंत तक बने रहते हैं। नियंत्रक के साथ संवाद STDIN और STDOUT के माध्यम से, newline- समाप्त संदेशों का उपयोग।
BEGIN [num-of-bots] [num-of-turns] [side-length]
शुरुआत में इनपुट है।DESTROY [turn]
प्रत्येक विनाश चरण की शुरुआत में इनपुट है। आपका बॉटVERTEX x,y
एक शीर्ष चुनने के लिए या तो जवाब देगा , याNONE
।BROKEN [turn] [your-choice] [other-choices]
प्रत्येक विनाश चरण के अंत में इनपुट है। अन्य बॉट्स का क्रम प्रत्येक गेम की शुरुआत में यादृच्छिक होता है, लेकिन इसके दौरान स्थिर रहता है। विकल्प के रूप में प्रस्तुत कर रहे हैंx,y
याN
।ACTIVATE [turn]
औरOWNED [turn] [your-choice] [other-choices]
सक्रियण चरण के लिए ऊपर के समकक्ष हैं, और एक ही शब्दार्थ है।SCORE [your-score] [other-scores]
खेल के अंत में इनपुट है।- किसी चरण के परिणामों का विश्लेषण करने और अगला शीर्ष चुनने के लिए आपके बॉट में 1 सेकंड है, और स्कोर दिए जाने के बाद छोड़ने के लिए 1 सेकंड । मैं अपने अपेक्षाकृत पुराने लैपटॉप पर सबमिशन का परीक्षण करूंगा, इसलिए यहां कुछ मार्जिन छोड़ना बेहतर है।
कृपया अपने आउटपुट बफर को फ्लश करना याद रखें।ऐसा न करने से कुछ वातावरण में नियंत्रक लटका रह सकता है।
लीडरबोर्ड
अपडेट किया गया 3/13/2015
पीसमेकर ऊपर और चल रहा है, और फ़नलवेब को एक अपडेट भी मिला। स्कोर एक परिमाण के क्रम से उछल गया। कनेक्टर दो गेम में समय सीमा को पार कर गया।
Funnelweb: 30911
Connector: 18431
Watermelon: 3488
Annoyance: 1552
Explorer: 735
Checkpoint: 720
Random Builder: 535
FaucetBot: 236
Peacemaker: 80
ASCII कला ग्राफिक्स के साथ पूर्ण लॉग कंट्रोलर के भंडार में, पाया जा सकता है graphical_log.txt
।
कुछ अवलोकन:
- कनेक्टर को बहुत आसानी से उसके सामने एक एकल शीर्ष को तोड़कर रोका जा सकता है। मुझे लगता है कि एनॉयनेस अक्सर ऐसा करता है। हालांकि, यह वर्तमान में बहुत कम समझ में आता है क्योंकि केवल कनेक्टर ही एक पथ का निर्माण कर सकता है।
- तरबूज एक कनेक्टिंग पथ पर होने से एक सभ्य स्कोर प्राप्त कर सकता है (चूंकि डीएफएस इसके कोने का उपयोग करने की बहुत संभावना है)।
- एक्सप्लोरर तरबूज से बेलें उगाना पसंद करता है।
- अपडेटेड फ़नलवेब वास्तव में अच्छे स्कोर प्राप्त करता है, क्योंकि कनेक्टर आमतौर पर ग्रिड के निचले आधे हिस्से में उस पर लेट जाता है।
- खेल काफी लंबा हो रहा है, औसत दौर मेरी मशीन पर लगभग 25 सेकंड ले रहा है।
4/3*N^2
, और यहां तक कि बॉट्स को वैध रास्ते बनाने में समस्या थी। हालांकि, कनेक्टर को एक त्रुटि के कारण अस्थायी रूप से अयोग्य घोषित कर दिया गया था, और अब जबकि यह तय हो गया है, मुझे उम्मीद है कि खेल अधिक दिलचस्प होंगे। मैं आज रात एक और बैच चलाऊंगा।