अंतिम परिणाम उपलब्ध
परिचय
भारी विषयों ( काल्पनिक युद्ध , दुनिया भर में महामारी ...) के साथ मेरे पिछले KOTH के बाद , मैं एक नए प्रकाशस्तंभ खेल के साथ वापस आ गया हूं। इस बार, आप "बोर्ड गेम जैसी स्थिति" में सामना कर रहे हैं। उल्टा सिक्कों का ढेर वास्तव में एक बड़ी मेज के केंद्र में रखा गया है, और आप लूट का हिस्सा पाने के लिए दृढ़ हैं!
शब्दकोष
सिक्के : ऐसे टोकन जिन्हें या तो फ़्लिप किया जा सकता है या अनफ़्लिप किया जा सकता है।
अनफ्लिप्ड : टेबल पर रखे सिक्के अपने मूल्य के साथ नीचे की ओर इशारा करते हैं। यह सिक्कों की डिफ़ॉल्ट स्थिति है।
फ़्लिप किया गया : टेबल पर अंकित सिक्के उनके मूल्य को इंगित करते हुए।
स्थानीय : आपके सिक्कों के ढेर का संदर्भ देता है।
ग्लोबल : केंद्र में सिक्कों के ढेर को संदर्भित करता है।
सिद्धांत
खेल की शुरुआत में, प्रत्येक खिलाड़ी 0 अंक और 0 सिक्के (फ़्लिप या अनफ़िल्ड) के साथ शुरू होता है । खेल टर्न-आधारित है। अपनी बारी के दौरान, खिलाड़ी टेबल के केंद्र में सिक्कों के ढेर के साथ बातचीत करते हुए 3 कार्रवाई कर सकते हैं, अपने स्वयं के सिक्कों के ढेर या अन्य खिलाड़ियों के साथ।
गेम की शुरुआत में प्ले ऑर्डर को यादृच्छिक रूप से परिभाषित किया गया है। तर्क सूची में खिलाड़ियों का क्रम टर्न ऑर्डर का प्रतिनिधित्व करता है, और यह उस सूची में बाएं से दाएं जाता है। "अगला" और "पिछला" क्रमशः "उस सूची में दाईं ओर" और "उस सूची में बाईं ओर" को एक लूप के साथ संदर्भित करें यदि आप दोनों तरफ से अंतिम हैं।
खेल 50 राउंड तक या एक खिलाड़ी टर्न के अंत में केंद्र में 0 सिक्के होने तक रहता है (जिसका अर्थ है कि आप अपने 3 कार्यों को समाप्त कर देंगे, भले ही ढेर आपकी पहली कार्रवाई के बाद खाली हो, और आप सिक्कों को वापस जाने के लिए रख सकते हैं खेल जारी है)। वैश्विक सिक्कों की प्रारंभिक संख्या को इस सूत्र के साथ यादृच्छिक रूप से परिभाषित किया गया है:
(2 ^ nb_players) + (nb_players * 10) - random(1 + (nb_players ^ 2))`
प्रत्येक क्रिया से आपको अंक मिलेंगे (या आप कुछ खो देंगे) और खेल के अंत में, आपके पास मौजूद प्रत्येक सिक्का आपके बिंदुओं में जोड़ दिया जाएगा ( -1 फ़्लिप के लिए, फ़्लिप के लिए +2 )। उच्चतम स्कोर वाला खिलाड़ी जीतता है।
नियंत्रक आपको कमांड तर्कों के माध्यम से इनपुट प्रदान करता है, और आपके प्रोग्राम को स्टैडआउट के माध्यम से आउटपुट करना होता है।
वाक्य - विन्यास
इनपुट
हर बार जब आपका कार्यक्रम कहा जाता है, तो उसे इस प्रारूप में तर्क प्राप्त होंगे:
Round;YourPlayerId;Coins;PlayerId_Points_Flipped_Unflipped;PlayerId_Points_Flipped_Unflipped;...
सीमा 1-अनुक्रमित हैं।
उदाहरण इनपुट
6;2;52;1_20_3_12;0_-2_0_1;2_12_1_0
यहां, आप देखते हैं कि यह 6 वां दौर है और आप खिलाड़ी हैं। केंद्रीय ढेर में 52 सिक्के हैं। आपके पास 12 अंक, 1 फ़्लिप्ड सिक्का और 0 अनफ़िल्ड सिक्का है। अंक नकारात्मक हो सकते हैं।
उत्पादन
आपको तीन वर्ण (कोई स्थान नहीं, कोई विभाजक नहीं) का उत्पादन करना होगा, जो प्रत्येक क्रिया के अनुरूप हो। वर्णों का क्रम क्रियाओं के क्रम को निर्धारित करता है। आप एक ही क्रिया को कई बार आउटपुट कर सकते हैं। यदि आपकी कार्रवाई को पूरा करने के लिए पर्याप्त सिक्के नहीं हैं, तो यह उपलब्ध सिक्कों का अधिकतम उपयोग करेगा और केवल इस्तेमाल किए गए सिक्कों के लिए अंक गिनेगा।
N: कुछ भी न करें
1: केंद्रीय ढेर से 1 सिक्का लें [प्रभाव: +1 स्थानीय अनफ़्लेप्ड / -1 पॉइंट / -1 ग्लोबल अनफ़्लेप्ड]
2 : केंद्रीय ढेर से 2 सिक्के लें। प्रभाव: +2 स्थानीय अनफ़िल्टर्ड / -2 अंक / -2 ग्लोबल अनफ्लिप्ड]
3 : केंद्रीय ढेर से 3 सिक्के लें। प्रभाव: +3 स्थानीय अनफ़्लेप्ड / -3 अंक / -3 वैश्विक अनफ़िल्ड किए गए]
A : अपने ढेर से 1 सिक्का वापस रखें [प्रभाव: -1 स्थानीय अनफ़्लेप्ड / +1 पॉइंट / +1 वैश्विक अप्रकाशित]
B : अपने ढेर से 2 सिक्के वापस रखें [प्रभाव: -2 स्थानीय unflipped / +2 अंक / +2 वैश्विक unflipped]
C : अपने ढेर से 3 सिक्के वापस रखें [प्रभाव: -3 स्थानीय unflipped / +3 अंक +3] वैश्विक स्तरहीन]
X : अपने ढेर से 1 सिक्का निकालें[प्रभाव: -1 स्थानीय अप्रकाशित / ० बिंदु]
Y : अपने ढेर से २ सिक्के निकालें [प्रभाव: -२ स्थानीय अप्रभावित / ० बिंदु]
Z : अपने ढेर से ३ सिक्के निकालें [प्रभाव: -३ स्थानीय अनफ़ल्टेड / ० बिंदु]
R : सिक्कों को घुमाएँ पिछले खिलाड़ी के लिए [प्रभाव: -1 बिना अंक प्राप्त किए गए प्रति अंक, फ़्लिप प्राप्त किए गए प्रति +2 अंक / सभी खिलाड़ियों पर लागू होते हैं]
T : अगले खिलाड़ी को सिक्के घुमाएँ [प्रभाव: -1 मिले हुए प्रतिफल प्राप्त हुए, प्रति फ़्लिप प्राप्त किए गए प्रति +2 अंक सभी खिलाड़ी]
F : फ्लिप 1 का सिक्का [प्रभाव: -1 स्थानीय अनफ़्लेप्ड / +1 लोकल फ़्लिप / +2 पॉइंट]
U : अनलिफ़िप 1 सिक्का [प्रभाव: +1 स्थानीय अनफ़्लेप्ड / -1 स्थानीय फ़्लिप / -2 पॉइंट]
उदाहरण आउटपुट
2FF : दो सिक्के लेता है और दो सिक्के फड़फड़ाता है -2 + 2 + 2 = 2 points
यदि आपका आउटपुट गलत है, तो नियंत्रक मान जाएगा NNN।
नियंत्रक
आप GitHub पर नियंत्रक पा सकते हैं । इसमें दो सैंपलबॉट भी शामिल हैं, जो जावा में लिखे गए हैं। इसे चलाने के लिए, प्रोजेक्ट देखें और इसे अपने जावा आईडीई में खोलें। mainकक्षा की विधि में प्रवेश बिंदु Game। जावा 8 की आवश्यकता है।
बॉट्स जोड़ने के लिए, पहले आपको जावा (.class फ़ाइलों) के लिए संकलित संस्करण या व्याख्या की गई भाषाओं के स्रोतों की आवश्यकता होगी। उन्हें प्रोजेक्ट के रूट फ़ोल्डर में रखें। फिर, playersपैकेज में एक नया जावा वर्ग बनाएं (आप पहले से मौजूद बॉट्स पर उदाहरण ले सकते हैं)। इस वर्ग को Playerविधि को ओवरराइड करने के लिए लागू करना चाहिए String getCmd()। लौटाई गई स्ट्रिंग आपके बॉट्स को चलाने के लिए शेल कमांड है। आप उदाहरण के लिए इस आदेश के साथ रूबी बॉट काम कर सकते हैं return "C:\Ruby\bin\ruby.exe MyBot.rb";:। अंत में, Gameवर्ग के शीर्ष पर खिलाड़ियों के सरणी में बॉट जोड़ें ।
नियम
- बॉट को विशिष्ट अन्य बॉट को हरा या समर्थन करने के लिए नहीं लिखा जाना चाहिए।
- फाइलों को लिखने की अनुमति है। कृपया "yoursubmissionname.txt" पर लिखें, गेम शुरू होने से पहले फ़ोल्डर खाली कर दिया जाएगा। अन्य बाहरी संसाधन अस्वीकृत हैं।
- आपके सबमिशन का जवाब देने के लिए 1 सेकंड है।
- अपने सबमिशन को संकलित करने और चलाने के लिए कमांड प्रदान करें।
समर्थित भाषाएँ
मैं हर भाषा का प्रयास और समर्थन करूंगा, लेकिन इसे मुफ्त में ऑनलाइन उपलब्ध होना चाहिए। यदि आप "मुख्यधारा" भाषा का उपयोग नहीं कर रहे हैं तो कृपया स्थापना के लिए निर्देश प्रदान करें।
फिलहाल, मैं चला सकता हूं: जावा 6-7-8, पीएचपी, रूबी, पर्ल, पायथन 2-3, लुआ, आर, नोड.जेएस, हास्केल, कोटलिन, सी ++ 11।
अंतिम परिणाम
ये 100 गेम के परिणाम हैं (अंक जोड़े गए हैं):
1. BirdInTheHand: 1017790
2. Balance: 851428
3. SecondBest: 802316
4. Crook: 739080
5. Jim: 723440
6. Flipper: 613290
7. Wheeler: 585516
8. Oracle: 574916
9. SimpleBot: 543665
10. TraderBot: 538160
11. EgoisticalBot: 529567
12. RememberMe: 497513
13. PassiveBot: 494441
14. TheJanitor: 474069
15. GreedyRotation: 447057
16. Devil: 79212
17. Saboteur: 62240
खेलों के अलग-अलग परिणाम यहां उपलब्ध हैं: http://pasted.co/63f1e924 (शुरुआती सिक्के और प्रति गेम राउंड की संख्या)।
विजेता को 50 प्रतिष्ठा का पुरस्कार दिया जाता है: मार्टिन ब्यूटनर द्वारा बर्ड इन द हैंड ।
अपनी भागीदारी के लिए आप सभी का धन्यवाद, आपको अगला KOTH ~ दिखाई देगा