तुम गालियों के गिला हो। स्वाभाविक रूप से, कीचड़ होने के नाते, आप जितना संभव हो उतना क्षेत्र पर ऊब करना चाहते हैं। लेकिन वहाँ 3 अन्य slimes जो सटीक एक ही काम करना चाहते हैं। श्रेष्ठ गद्यकार कौन होगा?
विवरण
सभी अखाड़ों को एक अखाड़े में इकट्ठा किया जाएगा। न्यायाधीश (यानी नियंत्रण कार्यक्रम) सभी संभावित 4-कीचड़ संयोजनों की एक विस्तृत सूची के माध्यम से जाएंगे, उन्हें एक मेज के कोनों पर रखेंगे, और यह देखने के लिए देखेंगे कि सबसे अधिक क्षेत्र में कौन से कीचड़ निकलता है।
आपके स्लैम प्रत्येक मोड़ पर 3 क्रियाओं में से एक कर सकते हैं: बाहर फैलाएं, कूदें, या मर्ज करें। आगे इनका क्या अर्थ है यह आउटपुट अनुभाग में प्रदान किया जाएगा ।
बोर्ड / अखाड़ा
अखाड़ा एक वर्ग बोर्ड होगा (वर्तमान में 8x8, लेकिन यह भविष्य में बदल सकता है)। यहाँ एक खेल का एक उदाहरण है प्रगति में:
11111222
11111444
11.22444
.1222.4.
333.3244
33333.44
333...44
333....4
कीचड़ 1 (4 से 1 खिलाड़ी) के माध्यम से संख्या 1 द्वारा दर्शाया गया है, और खाली स्थान एक डॉट ( .) द्वारा दर्शाया गया है । प्रारंभ में, बोर्ड सभी खाली स्थान के रूप में शीर्ष 1 बाएं कोने में खिलाड़ी 1 के कीचड़ की एक इकाई को छोड़कर, शीर्ष दाएं में खिलाड़ी 2, नीचे बाएं में खिलाड़ी 3 और नीचे दाईं ओर खिलाड़ी 4 को छोड़कर शुरू होता है।
कोड में पठनीयता के लिए निर्देशांक 0-आधारित पंक्ति और स्तंभ सूचकांक द्वारा दर्शाए जाते हैं। उदाहरण के लिए, निर्देशांक (3, 6) 4 वीं पंक्ति में 7 वें वर्ग का प्रतिनिधित्व करते हैं (उपरोक्त उदाहरण में, ए 4)। (इससे वर्गों का उपयोग करना आसान हो जाता है:) board[coords.x][coords.y]यहां एक दृश्य चित्रण है:
(0, 0) (0, 1) (0, 2)
(1, 0) (1, 1) (1, 2)
(2, 0) (2, 1) (2, 2)
इनपुट
आपके प्रोग्राम का इनपुट होगा कि आप कौन से खिलाड़ी हैं (1, 2, 3, या 4), एक अल्पविराम ( ,), फिर बोर्ड / अखाड़े की सामग्री (नए सिरे से अल्पविराम से प्रतिस्थापित)। उदाहरण के लिए, यदि आप उपरोक्त परिदृश्य में खिलाड़ी 3 थे, तो आपका इनपुट होगा:
3,11111222,11111444,11.22444,.1222.4.,333.3244,33333.44,333...44,333....4
उत्पादन
आपके प्रोग्राम में 4 पूर्णांकों का आउटपुट होना चाहिए। पहले दो पंक्ति और स्तंभ अनुक्रमणिका हैं, जिस क्रम में आप चलना चाहते हैं, और अगले दो पंक्ति और स्तंभ अनुक्रमणिका हैं जहाँ आप उन्हें स्थानांतरित करना चाहते हैं।
आपके पास प्रत्येक मोड़ पर तीन विकल्प हैं: बाहर फैलाएं, कूदें, या मर्ज करें।
फैलाना
फैलाने के लिए, लक्ष्य निर्देशांक को ले जाया जा रहा कीचड़ से बिल्कुल एक वर्ग दूर होना चाहिए, और लक्ष्य निर्देशांक पर वर्ग खाली जगह होना चाहिए। फैलते समय, लक्ष्य निर्देशांक पर एक नया कीचड़ बनाया जाता है और पुराने कीचड़ को हटाया नहीं जाता है। नया कीचड़ बनने के बाद, इस नए कीचड़ के आसपास के 8 चौकों में सभी दुश्मन स्लैम चले गए खिलाड़ी में बदल जाते हैं।
उदाहरण के लिए, छवि 1 में बोर्ड के साथ, यदि खिलाड़ी 1 आउटपुट के लिए था
0 1 1 2, तो परिणाम छवि 2 में बोर्ड होगा।1. 2. 11.22 11.12 1..22 1.112 ..22. ..11. ..... .....कूद
कूदने के लिए, लक्ष्य निर्देशांक को ले जाया जा रहा कीचड़ से बिल्कुल दो वर्ग दूर होना चाहिए, और लक्ष्य निर्देशांक पर वर्ग खाली स्थान होना चाहिए। जुपिंग करते समय, लक्ष्य निर्देशांक पर एक नया कीचड़ बनाया जाता है और पुराने कीचड़ को हटा दिया जाता है। नया कीचड़ बनने के बाद, इस नए कीचड़ के आसपास के 8 चौकों में सभी दुश्मन स्लैम चले गए खिलाड़ी में बदल जाते हैं।
उदाहरण के लिए, छवि 1 में बोर्ड के साथ, यदि खिलाड़ी 1 आउटपुट के लिए था
0 1 2 3, तो परिणाम छवि 2 में बोर्ड होगा।1. 2. 11..2 1...2 1...2 1...1 ....2 ...11 ...22 ...11मर्ज
मर्ज करने के लिए, लक्ष्य निर्देशांक को ले जाया जा रहा कीचड़ से बिल्कुल एक वर्ग की दूरी पर होना चाहिए, और लक्ष्य निर्देशांक पर वर्ग एक ही खिलाड़ी का कीचड़ होना चाहिए। विलय होने पर, पुराने कीचड़ को हटा दिया जाता है। फिर, लक्ष्य कीचड़ के चारों ओर 8 चौकों में सभी खाली स्थान उस खिलाड़ी में परिवर्तित हो जाते हैं जो स्थानांतरित हो गए (पुराने कीचड़ को स्थानांतरित नहीं किया जा रहा है)।
उदाहरण के लिए, छवि 1 में बोर्ड के साथ, यदि खिलाड़ी 1 आउटपुट के लिए था
0 1 1 2, तो परिणाम छवि 2 में बोर्ड होगा।1. 2. 11..2 1.112 1.1.2 11112 ....2 .1112 ..222 ..222
आप केवल अवैध निर्देशांक (उदा। 0 0 0 0) को आउटपुट करके भी पास कर सकते हैं ।
नियम और बाधाएँ
अतिरिक्त नियम हैं:
- डेटा को बनाए रखने के लिए आप अपने स्वयं के फ़ोल्डर में फ़ाइलों को पढ़ और लिख सकते हैं (प्रस्तुतियाँ संग्रहीत की जाएंगी
players/YourBotName/yourBotName.language), लेकिन आप इसके अलावा किसी अन्य चीज को संशोधित या एक्सेस नहीं कर सकते हैं। इंटरनेट का उपयोग निषिद्ध है। - आपके सबमिशन को विशेष रूप से किसी अन्य सबमिशन में मदद या चोट पहुंचाने के लिए कोडित नहीं किया जा सकता है। (आपके पास कई प्रस्तुतियाँ हो सकती हैं, लेकिन उन्हें विशेष रूप से किसी भी तरह से एक-दूसरे के साथ बातचीत नहीं करनी चाहिए।)
- आपके सबमिशन को प्रति सेकंड 0.1 सेकंड से अधिक नहीं लेना चाहिए। यदि आपकी सबमिशन में कभी-कभी 0.105 सेकंड लगते हैं, तो यह ठीक है, लेकिन इस समय सीमा की तुलना में इसमें लगातार अधिक समय नहीं लग सकता है। (यह मुख्य रूप से अधिक समय लेने वाले परीक्षण से बचने के लिए एक स्वच्छता जांच है।)
- आपका सबमिशन दूसरे की सटीक डुप्लिकेट (यानी सटीक समान तर्क का उपयोग) नहीं होना चाहिए, भले ही वह किसी अन्य भाषा में हो।
- आपका सबमिशन एक गंभीर सबमिशन होना चाहिए। यह राय-आधारित है, लेकिन यदि आपका प्रस्तुतिकरण स्पष्ट रूप से चुनौती को हल करने का प्रयास नहीं कर रहा है (उदाहरण के लिए यदि आप हर मोड़ से गुजरते हैं), तो यह अयोग्य होगा।
यदि आपका सबमिशन इनमें से किसी भी नियम को तोड़ता है या विनिर्देश का पालन नहीं करता है, तो इसे अयोग्य घोषित कर दिया जाएगा, हटा दिया playerlist.txtजाएगा और खेल शुरू से शुरू हो जाएगा। यदि आपका सबमिशन अयोग्य है, तो मैं आपके पोस्ट पर एक टिप्पणी छोड़ दूंगा कि क्यों। अन्यथा, आपका सबमिशन लीडरबोर्ड में जोड़ा जाएगा। (यदि आप लीडरबोर्ड पर अपना सबमिशन नहीं देखते हैं, तो आपके पोस्ट पर कोई व्याख्यात्मक टिप्पणी नहीं है, और नीचे दिए गए "अंतिम अद्यतन" से पहले अपना सबमिशन पोस्ट किया है, कृपया मुझे बताएं! मैं अनजाने में इसे अनदेखा कर सकता हूं।)
अपनी प्रविष्टि में, कृपया शामिल करें:
- एक नाम।
- एक शेल कमांड (उदाहरण के लिए, अपने कार्यक्रम चलाने के लिए
java MyBot.java,ruby MyBot.rb,python3 MyBot.py, आदि)।- ध्यान दें कि इनपुट (आपका खिलाड़ी और मानचित्र) को कमांड लाइन तर्क के रूप में जोड़ा जाएगा।
- कार्यक्रमों को Ubuntu 14.04 पर परीक्षण किया जाएगा, इसलिए सुनिश्चित करें कि आपका कोड उस पर (स्वतंत्र रूप से) चलाया जा सकता है।
- एक संस्करण संख्या, यदि आपका कोड आपकी भाषा के विभिन्न संस्करणों पर अलग तरह से काम करता है।
- आपका बॉट कोड।
- यदि आवश्यक हो, तो कोड को संकलित करने के निर्देश।
नियंत्रक कोड / परीक्षण, उदाहरण बॉट
नियंत्रक कोड C ++ में लिखा गया है, और इसे जीथब पर पाया जा सकता है । अपने कोड को चलाने और परीक्षण करने के तरीके के बारे में और निर्देश वहां मिल सकते हैं।
simplebot.rb, एक बहुत ही साधारण बॉट जो प्रत्येक मोड़ पर एक यादृच्छिक स्थान पर एक यादृच्छिक कीचड़ फैलाता है या कूदता है, उसे भी गिथूब पर पोस्ट किया जाता है ।
स्कोरिंग और लीडरबोर्ड
जब बोर्ड पर सभी वर्ग भरे जाते हैं, तो खेल समाप्त हो जाता है और स्कोर की गणना की जाती है। एक खिलाड़ी का अंतिम स्कोर वर्गों की राशि है जो खेल के अंत में अपने कीचड़ को समाहित करता है। यदि 2000 मोड़ बीत चुके हैं (प्रत्येक खिलाड़ी के लिए 500) और खेल अभी भी खत्म नहीं हुआ है, तो खेल वैसे भी समाप्त हो जाएगा और स्कोर की रिपोर्ट की जाएगी जैसे कि खेल समाप्त हो गया था।
टूर्नामेंट के अंत में, सभी खेलों के स्कोर प्रत्येक खिलाड़ी के अंतिम स्कोर की गणना करने के लिए औसत होंगे, जिसे लीडरबोर्ड पर पोस्ट किया जाएगा। कोई जमा करने की समय सीमा नहीं है; मैं समय-समय पर लीडरबोर्ड को अपडेट करता रहूंगा क्योंकि नए सबमिशन आते हैं।
एक वास्तविक लीडरबोर्ड प्रकट होने तक 4 प्रस्तुतियाँ आवश्यक हैं।
+--------------------------+-----------+--------------------+
| Name | Avg Score | Last Updated (UTC) |
+--------------------------+-----------+--------------------+
| GreedySlime | 47.000 | Jul 22 10:27 PM |
| Jumper | 12.000 | Jul 22 10:27 PM |
| ShallowBlue | 5.000 | Jul 22 10:27 PM |
| Lichen | 0.000 | Jul 22 10:27 PM |
+--------------------------+-----------+--------------------+
अंतिम अपडेट: जुलाई 22 10:27 PM (UTC)।