परिचय
इस खेल में, खिलाड़ी अपनी सेनाओं का उपयोग अन्य खिलाड़ियों की सेनाओं से लड़ने के लिए करते हैं, प्रदेशों पर कब्जा करते हैं और अंतिम व्यक्ति बन जाते हैं। प्रत्येक मोड़ पर, खिलाड़ियों को अपने निपटान में उपयोग करने के लिए सेनाओं की एक आधार संख्या प्राप्त होती है। कुछ क्षेत्रों में प्रदेशों पर कब्जा करके, हालांकि, खिलाड़ी बाद में उन्हें खेल में संभावित लाभ देने के लिए इस संख्या को बढ़ा सकते हैं। (यह मूल रूप से वॉरलाइट के समान है )।
सभी बॉट जावा, सी, या सी ++ में लिखे जाने चाहिए (मैं अन्य भाषाओं को शामिल करूंगा लेकिन उनके लिए सॉफ्टवेयर या अनुभव नहीं है)। आपके द्वारा किसी वर्ग का विस्तार करने के लिए प्रस्तुत करना आवश्यक नहीं है, और आप फ़ंक्शन, वर्ग, इंटरफ़ेस, या जो कुछ भी आवश्यक है, बना सकते हैं और मानक API में किसी भी पैकेज या वर्ग का उपयोग कर सकते हैं । यदि आप एक वर्ग या इंटरफ़ेस बनाने की योजना बना रहे हैं, तो कृपया एक आंतरिक वर्ग या आंतरिक इंटरफ़ेस का उपयोग करने पर विचार करें।
कृपया इस प्रतियोगिता में नियंत्रक या अन्य सबमिशन को प्रोग्रामेटिक रूप से बदलने का प्रयास न करें।
गेमप्ले
अवलोकन
एक 10x10 दो आयामी सरणी बोर्ड का अनुकरण करेगा, प्रत्येक तत्व / सेल एक "क्षेत्र" का प्रतिनिधित्व करेगा। इसमें 20 राउंड और 1000 राउंड प्रति राउंड होंगे। प्रत्येक मोड़ पर, खिलाड़ी सबसे पहले उन सेनाओं को तैनात करेंगे, जिनके पास उनके पास कोई भी क्षेत्र है, और फिर उन्हें सेनाओं पर हमला करके अपने विरोधियों के प्रदेशों पर कब्जा करने के प्रयास में अपनी सेनाओं को पास के प्रदेशों में ले जाने का अवसर दिया जाएगा। खिलाड़ियों को अपनी सभी सेनाओं को तैनात करना होगा , लेकिन उन्हें वांछित होने पर उन्हें स्थानांतरित करने की आवश्यकता नहीं है।
सेनाओं पर हमला / स्थानांतरित करना
यदि खिलाड़ी इच्छा करता है, तो वह आठ क्षेत्रों में से किसी एक में सेनाओं को एक क्षेत्र से भेज सकता है। बोर्ड "चारों ओर लपेटता है", यानी यदि एक खिलाड़ी का क्षेत्र एक तरफ है, तो इससे सेनाओं को दूसरी तरफ एक आसन्न क्षेत्र में स्थानांतरित किया जा सकता है। जब किसी क्षेत्र से सेनाएँ चलती हैं, तो उस क्षेत्र में अभी भी कम से कम एक सेना बची होनी चाहिए। उदाहरण के लिए, यदि किसी क्षेत्र में पाँच सेनाएँ होती हैं, तो चार से अधिक को अलग क्षेत्र में नहीं ले जाया जा सकता है; यदि किसी क्षेत्र में एक है, तो वह सेना नहीं जा सकती।
यदि कोई खिलाड़ी n
सेनाओं को एक क्षेत्र से दूसरे क्षेत्र में भेजता है , तो उसके पास उस क्षेत्र की n
सेनाएँ होंगी ।
मान लीजिए कि कोई खिलाड़ी n
अपने क्षेत्र से o
सेनाओं के साथ विरोधी क्षेत्र में सेना भेजता है। निकटतम पूर्णांक तक गोल o
करके घट जाएगा n * .6
; हालांकि, एक ही समय में, निकटतम पूर्णांक तक गोल n
हो जाएगा o * .7
। विरोधी क्षेत्र पर कब्जा किया गया है या नहीं, इससे निपटने वाले निम्नलिखित नियम लागू होंगे:
- यदि
o
शून्य तक पहुंच जाता है औरn
0 से अधिक है, तो खिलाड़ी उस क्षेत्र को संभाल लेगा, जिसमेंn
सेनाएं होंगी । - यदि दोनों
n
औरo
बन शून्य,o
स्वचालित रूप से 1 पर सेट हो जाएगा और क्षेत्र पर कब्जा कर लिया नहीं किया जाएगा। - यदि
o
0 से अधिक रहता है, तो खिलाड़ी के क्षेत्र में सेनाओं की संख्या में वृद्धि होगीn
और विरोधी क्षेत्र पर कब्जा नहीं किया जाएगा।
बोनस
प्रदेशों के एक समूह को एक बोनस का प्रतिनिधित्व करने के लिए चुना जाएगा; यदि एक खिलाड़ी सभी क्षेत्रों का मालिक है जो समूह का हिस्सा है, तो उस खिलाड़ी को प्रति बारी सेनाओं की एक अतिरिक्त राशि प्राप्त होगी।
बोनस के पास अलग-अलग लोगों और मूल्यों को निरूपित करने के लिए आईडी नंबर होते हैं जो एक खिलाड़ी को प्राप्त होने वाली सेनाओं की अतिरिक्त संख्या का प्रतिनिधित्व करते हैं। प्रत्येक राउंड, एक बोनस का मान 5 और 10 के बीच एक यादृच्छिक संख्या होगी, समावेशी, और दस बोनस फील्ड पर उपलब्ध होंगे, प्रत्येक में दस टेरिटरी शामिल होंगी।
उदाहरण के लिए, यदि एक खिलाड़ी जो प्रति वर्ष 5 सेनाएँ प्राप्त करता है, वह सभी क्षेत्रों का मालिक है जो 8 के मूल्य के साथ एक बोनस बनाता है, तो खिलाड़ी को अगले मोड़ और बाद में 13 सेनाएँ प्राप्त होंगी। यदि, हालांकि, खिलाड़ी एक या एक से अधिक प्रदेश खो देता है जो बोनस बनाते हैं, तो उसे हर बार केवल 5 सेनाएँ प्राप्त होंगी।
इनपुट आउटपुट
आपके प्रोग्राम को कमांड-लाइन तर्कों के माध्यम से इनपुट लेना चाहिए, जिसमें निम्न प्रारूप होंगे:
[id] [armies] [territories (yours and all adjacent ones)] [bonuses] ["X" (if first turn)]
id
औरarmies
दोनों पूरी संख्या हैं।id
आपकी आईडी है, औरarmies
सेनाओं की संख्या है जो आपको अपने क्षेत्रों में तैनात करने की आवश्यकता है। आपको दी गई सभी सेनाओं को तैनात करना होगा - न अधिक और न कम।territories
उन क्षेत्रों का प्रतिनिधित्व करने वाली श्रृंखला है जो आपके और उन क्षेत्रों का प्रतिनिधित्व करते हैं जो आपके पास नहीं हैं जो आपके पास हैं। तार इस प्रारूप में हैं:[row],[col],[bonus id],[player id],[armies]
row
औरcol
बोर्ड की पंक्ति और स्तंभ को इंगित करें जहां क्षेत्र है,bonus id
बोनस की आईडी है जो इस क्षेत्र का एक हिस्सा है,player id
उस खिलाड़ी की आईडी है जो क्षेत्र का मालिक है, औरarmies
क्षेत्र में निहित सेनाओं की संख्या है। ये सभी संख्याएँ हैं।bonuses
बोर्ड पर बोनस का प्रतिनिधित्व करने वाले तारों की एक श्रृंखला है जिसका आप लाभ उठा सकते हैं। तार इस प्रारूप में हैं:[id],[armies],[territories left]
id
बोनस की आईडी है,armies
इस बोनस में सभी क्षेत्रों के मालिक होने पर आप प्राप्त होने वाली अतिरिक्त सेनाओंterritories left
की संख्या है , और बोनस में उन प्रदेशों की संख्या है जिन्हें आपको अतिरिक्त सेनाओं को प्राप्त करने के लिए पकड़ने की आवश्यकता है।
कृपया ध्यान दें कि एक पांचवें तर्क, एक "एक्स", दिखाई देगा यदि यह एक दौर की पहली बारी है और इसका उपयोग सुविधा कारणों से किया जा सकता है।
पहले मोड़ पर इनपुट का एक उदाहरण:
0 5 "7,6,7,-1,2 8,7,7,-1,2 7,7,7,0,5 6,6,7,-1,2 8,8,9,-1,2 6,7,7,-1,2 7,8,9,-1,2 6,8,9,-1,2 8,6,7,-1,2" "0,5,10 1,5,10 2,9,10 3,9,10 4,9,10 5,5,10 6,5,10 7,6,9 8,7,10 9,7,10" X
आपके कार्यक्रम को एक नई लाइन द्वारा अलग किए गए दो तारों का उत्पादन करना होगा, जिनमें से पहला उन प्रदेशों की पंक्तियों और स्तंभों को सूचीबद्ध करता है जिन्हें आप सेनाओं को जोड़ना चाहते हैं और सेनाओं की संख्या जो आप इसे जोड़ना चाहते हैं, और जिनमें से दूसरी पंक्तियों को सूचीबद्ध करता है। और उन प्रदेशों के स्तंभ जिन्हें आप सेनाएँ भेजना चाहते हैं और जितनी सेनाएँ भेजना चाहते हैं। आउटपुट में अनुगामी स्थान हो सकते हैं।
जिस क्षेत्र में आप सेनाएँ जोड़ना चाहते हैं, उसे निर्दिष्ट करने के लिए, आपके आउटपुट को इस प्रारूप का पालन करना चाहिए:
[row],[col],[armies]
row
और col
बोर्ड की पंक्ति और स्तंभ हैं, जहां आप उस क्षेत्र को सेनाओं को जोड़ना चाहते हैं, और armies
उस सेना की संख्या है जिसे आप क्षेत्र में जोड़ना चाहते हैं।
यह निर्दिष्ट करने के लिए कि आप किस क्षेत्र में सेनाएँ भेजना चाहते हैं, आपके आउटपुट को इस प्रारूप का पालन करना चाहिए:
[srow],[scol],[drow],[dcol],[armies]
srow
और scol
बोर्ड की पंक्ति और स्तंभ हैं, जहां से आप जिस क्षेत्र से सेनाओं को परिवहन करना चाहते हैं , drow
और dcol
उस बोर्ड की पंक्ति और स्तंभ हैं, जहां आप जिस क्षेत्र को सेना भेजना चाहते हैं, और armies
वह सेनाओं की संख्या है, जिसे आप भेजना चाहते हैं । ध्यान दें कि यदि आप किसी सेना को स्थानांतरित नहीं करना चाहते हैं, तो आपके कार्यक्रम को एक स्थान प्रिंट करना चाहिए।
एक नमूना आउटपुट यह हो सकता है:
0,0,5
0,0,0,1,3 0,0,1,0,3 0,0,1,1,3
इस स्थिति में, खिलाड़ी पांच सेनाओं को 0,0 पर क्षेत्र में तैनात करता है और तीन सेनाओं को 0,0 से 0,1 तक स्थानांतरित करता है; तीन 0,0 से 1,0 तक; और 0,0 से 1,1 तक तीन।
घाव और मोड़
प्रत्येक दौर की शुरुआत में, सभी खिलाड़ियों को बोर्ड पर एक यादृच्छिक स्थान पर स्थित एक क्षेत्र दिया जाएगा (दो या दो से अधिक खिलाड़ियों के लिए एक दूसरे के बगल में शुरू करना संभव है)। बोनस बनाने वाले क्षेत्र भी बदल सकते हैं।
पहली बारी में, प्रत्येक खिलाड़ी के पास एक क्षेत्र होगा जिसमें पाँच सेनाएँ होंगी, और वे पाँच सेनाएँ प्राप्त करेंगे जिनका वे उपयोग कर सकते हैं (यह न्यूनतम है जिसे वे प्राप्त कर सकते हैं)। अन्य सभी क्षेत्र एनपीसी के स्वामित्व में होंगे जो हमला नहीं करते हैं; इनमें से प्रत्येक में दो सेनाएँ होती हैं और इनकी एक आईडी होती है -1
।
प्रत्येक मोड़ पर आपका कार्यक्रम चलाया जाएगा, और आउटपुट के दोनों टुकड़े एकत्र किए जाएंगे। नियंत्रक उत्पादन का पहला टुकड़ा लागू करेगा, सेनाओं को प्रदेशों में जोड़ देगा, तुरंत; हालाँकि, नियंत्रक तब तक प्रतीक्षा करेगा जब तक कि सभी खिलाड़ी अपने उत्पादन का दूसरा टुकड़ा, अपना हमला / स्थानांतरण आदेश न दे दें। एक बार यह पूरा हो जाने के बाद, आदेशों को बेतरतीब ढंग से हिलाया जाएगा और फिर निष्पादित किया जाएगा। आपके कार्यक्रम को आउटपुट देना चाहिए और बारी में भाग लेने के लिए एक सेकंड या उससे कम समय में समाप्त करना चाहिए।
स्कोरिंग और जीतना
किसी भी दौर के लिए, यदि एक खिलाड़ी शेष है, तो वह खिलाड़ी 100 अंक अर्जित करेगा। अन्यथा, यदि 1000 पास होते हैं और अभी भी कई खिलाड़ी हैं, तो 100 अंक शेष खिलाड़ियों (यानी 3 खिलाड़ी शेष 33 अंक प्रत्येक अंक) के बीच समान रूप से विभाजित होंगे। जो भी खिलाड़ी 20 राउंड के अंत में सबसे अधिक अंक जीतेगा।
प्रस्तुतियाँ
आपकी पोस्ट में बॉट के लिए एक नाम शामिल होना चाहिए, यह जिस भाषा में लिखा गया है, उसका संक्षिप्त विवरण और इसे चलाने के लिए उपयोग किया गया कोड। एक नमूना बॉट यहां एक उदाहरण के रूप में पोस्ट किया जाएगा और प्रतियोगिता में उपयोग किया जाएगा। आप जितनी चाहें जमा कर सकते हैं।
अन्य
आपका प्रोग्राम किसी फ़ाइल से बना, लिख और पढ़ सकता है जब तक कि फ़ाइल का नाम आपके द्वारा सबमिट किए गए नाम के समान है। इन फ़ाइलों को एक टूर्नामेंट की शुरुआत से पहले हटा दिया जाएगा, लेकिन राउंड के बीच में नहीं।
अगर आपकी बारी छोड़ी जाएगी:
- आप समाप्त हो गए हैं (कोई क्षेत्र नहीं है);
- आपका कार्यक्रम कुछ भी नहीं छापता है;
- आपका कार्यक्रम एक सेकंड के भीतर समाप्त नहीं होता है;
- आप अपनी सेनाओं के लिए बहुत कम सेनाएँ तैनात करते हैं (उन प्रदेशों की सेनाएँ तैनात करते हैं जो आपके पास नहीं हैं) या बहुत सारी सेनाओं की गिनती होगी; या
- आपका आउटपुट नियंत्रक को अपवाद फेंकने का कारण बनता है।
आपके हमले / स्थानांतरण आदेश को निष्पादित नहीं किया जाएगा:
- आपका कार्यक्रम सही आउटपुट नहीं देता है;
- आप सेनाओं का चयन करने के लिए एक क्षेत्र चुनते हैं जिसमें से वह आपकी नहीं है;
- आप अपने क्षेत्र से शून्य या सेनाओं की एक नकारात्मक संख्या को स्थानांतरित करते हैं;
- आप अपने क्षेत्र से बहुत सी सेनाओं को स्थानांतरित करते हैं; या
- आप सेनाओं को भेजने के लिए एक क्षेत्र चुनते हैं जो उस क्षेत्र से सटे नहीं है जिसे आपने सेनाओं को स्थानांतरित करने के लिए चुना था।
आप नियंत्रक और एक नमूना बॉट यहां पा सकते हैं । बॉट खेल में भाग लेंगे, लेकिन यह शायद कोई राउंड नहीं जीतेगा (जब तक कि यह वास्तव में भाग्यशाली नहीं है)।
परिणाम
एक बग फिक्स को धकेलने के बाद नियंत्रक को चलाने के लिए, WeSwarm को फिर से जोड़ने के लिए एक बल बना रहता है। यह एक महान रणनीति के साथ एक बॉट ले जाएगा इसके खिलाफ एक मौका है।
As of 25-08-15, 04:40 UTC
1: WeSwarm 1420
2: java Player 120
java LandGrab 120
java Hermit 120
java Castler 120
6: java RandomHalver 80
सूचना!
ज़्व्स द्वारा खोजे गए बग के कारण प्रदेशों में उनकी सेनाओं को तैनात किया गया था, ताकि खेल में संभावित लाभ के लिए दूसरों को तैनात किया जा सके। एक संपादन नियंत्रक को धकेल दिया गया है, इसलिए कृपया ऊपर दिए गए लिंक का उपयोग करके पाए गए मौजूदा संस्करण का उपयोग करें।