परिचय
आप कुछ नौकरों के साथ एक निर्जन द्वीप पर फंसे हुए हैं और खजाने का शिकार हो रहे हैं। अब जितना खोजता है, उतना ही खजाना पाता है। जितने कम लोग खोज करते हैं, उतना अधिक प्रत्येक व्यक्ति पाता है।
सीमित आपूर्ति के कारण, नेता ने फैसला किया है कि समूह के एक चौथाई तक कुछ लोगों को प्रत्येक रात मरने के लिए छोड़ दिया जाएगा। उन्होंने किसी को भी यह बताने का फैसला नहीं किया है कि समय से पहले किसी भी दिन कितने लोग मारे जाएंगे।
आप 5 लोगों के एक छोटे समूह के नियंत्रण में हैं, जो आपके लिए खजाना खोजने के लिए शिविर से बाहर निकलेंगे।
उद्देश्य
इस प्रतियोगिता का उद्देश्य जितना संभव हो उतना खजाना एकत्र करना है। हर वह मोड़ जो आपके नौकर शिविर में लौटने की कोशिश नहीं करते हैं, वे एक निश्चित संख्या में खजाने के टुकड़े पाएंगे। आपके सेवक अलग-अलग समय पर शिविर में लौट सकते हैं।
प्रत्येक मोड़ जो एक कार्यकर्ता खजाने की खोज करने के लिए बाहर रहता है, श्रमिक को 1+Rखजाने के टुकड़े मिलते हैं , जहां Rश्रमिकों की संख्या (सभी बॉटों में से) पहले से ही शिविर में वापस आ गई है। इस गणना में मृत बॉट कारक नहीं हैं।
प्रत्येक दिन के शुरू में, एक यादृच्छिक संख्या ( n) से 2करने के लिए max(3, floor(num_live_players/4))चुना जाएगा। (1 दिन 10 खिलाड़ियों के लिए, यह है 2करने के लिए max(3,50/4)=12। 1 दिन पर 20 खिलाड़ियों के लिए, यह हो सकता है 2के लिए max(3,100/4)=25।) यह संख्या खिलाड़ी हैं जो उस दिन के लिए मरने के लिए छोड़ दिया जाएगा की संख्या का प्रतिनिधित्व करता है, और अपने कार्यक्रम के लिए नहीं दिया जाएगा ।
यदि एक नौकर nलौटने के लिए अंतिम लोगों में से एक है , तो वह / वह मर जाएगा और उस खजाने को हस्तांतरित करने में असमर्थ होगा जो उसने आपके कब्जे में पाया था। इसके अलावा, नौकर बाकी साहसिक कार्य के लिए खजाने की खोज में भाग लेने में असमर्थ होगा।
आपका अंतिम स्कोर आपके द्वारा प्रति एडवेंचर (कंट्रोलर को चलाने) के लिए प्राप्त औसत खजाना है।
यदि अधिक लोग खुले स्लॉट की तुलना में उसी मोड़ पर शिविर में लौटने का प्रयास करते हैं, तो यादृच्छिक संख्या निर्धारित करेगी कि कौन अंदर जाता है और कौन मर जाता है।
इस द्वीप पर एक दिन सूर्योदय से सूर्यास्त तक 30 चक्कर लगते हैं। चूंकि रात में कई खतरनाक जानवर होते हैं, इसलिए सूर्यास्त तक लौटने में विफलता का मतलब है कि आपको शिविर में नहीं जाने दिया जाएगा।
इनपुट आउटपुट
सिमुलेशन की संपूर्णता के लिए आपका कार्यक्रम चलना चाहिए।
सिमुलेशन की शुरुआत में, INDEX Iइनपुट किया जाएगा, जहां Iआपके बॉट का सूचकांक है (यह सूचकांक 1 अप से गिना जाता है)।
प्रत्येक दिन की शुरुआत में, START_DAY D/Nआपके प्रोग्राम में इनपुट किया जाएगा, जहां Dदिन की संख्या (शुरुआत से 1) है, और Nइसके बराबर है max(3, floor(num_live_players/4)), जो कि उस विशेष दिन पर मरने वाले लोगों की अधिकतम संख्या है।
प्रत्येक मोड़ के शुरू में, START_TURN Tआपके प्रोग्राम पर इनपुट किया जाएगा, जहां Tटर्न नंबर (शुरू से 1) है।
एक बार जब आपका प्रोग्राम इसे प्राप्त कर लेता है, तो उसे आपके सेवकों की चालों की सूची के साथ प्रतिक्रिया करनी चाहिए, प्रत्येक को अल्पविराम द्वारा अलग किया गया।
मान्य चालें हैं:
R: शिविर में लौटने का प्रयास करें।S: खजाने की तलाश में रहो।N: नौकर पहले ही मर चुका है या शिविर में है।
अमान्य चाल दर्ज करने पर व्याख्या की जाएगी जैसे Sकि बॉट जीवित है और शिविर में नहीं है, और Nअन्यथा।
प्रत्येक मोड़ के अंत में, आपके प्रोग्राम में एक स्ट्रिंग दी जाएगी:
END_TURN [Turn #] [Bot 1 Moves] [Bot 2 Moves] ...
जहां प्रत्येक बॉट के नौकरों की चाल अल्पविराम द्वारा अलग की जाती है।
ये चालें निम्नलिखित में से एक होंगी:
R: उस मोड़ को कैंप करने के लिए सफलतापूर्वक लौटे।r: उस मोड़ पर शिविर में लौटने में विफल।S: फिर भी खजाने की तलाश में।D: पहले वाले मोड़ पर मर गया।N: पहले से ही शिविर में वापस आ गया।
बॉट और नौकर पूरे सिमुलेशन में एक ही क्रम में रहते हैं।
उदाहरण के लिए:
INDEX 2
....
END_TURN 8 N,N,N,N,N r,r,r,r,D D,D,D,N,R S,D,D,N,D
यहां, आप दूसरे बॉट ( r,r,r,r,r) हैं, जिन्होंने सभी चार नौकरों को वापस करने की कोशिश की है जो अभी भी जीवित हैं (और चारों तरफ से असफल हो गए हैं)। बॉट 1 के नौकर सब वापस शिविर में हैं। बॉट 3 में तीन मृत नौकर, शिविर में एक और पीछे और पांचवें नौकर थे जो सफलतापूर्वक वापस आ गए। बॉट 4 में एक नौकर है जो रुका था (और मर जाएगा, क्योंकि यह एक दिन का आखिरी मोड़ है), शिविर में एक नौकर और तीन मृत नौकर थे।
इनमें से प्रत्येक स्ट्रिंग्स के बाद, जब तक कि दिन के अंत में एक स्ट्रिंग सिग्नलिंग भी आउटपुट नहीं किया गया है (नीचे देखें), आपका प्रोग्राम कॉमा द्वारा अलग किए गए आपके सेवकों की अगली चालों को आउटपुट करने के लिए है। सभी नौकरों का हिसाब होना चाहिए ( Nयदि पहले से शिविर में हैं, और Dयदि पहले ही मर चुके हैं)। अवैध चालों को माना जाएगा जैसे Sकि नौकर पहले ही शिविर में नहीं है। उदाहरण:
N,N,S,S,R
जिसका मतलब है:
Servant # | Action
1 | Do nothing.
2 | Do nothing.
3 | Stay put (keep looking for treasure).
4 | Stay put (keep looking for treasure).
5 | Try to return to camp.
एक दिन के अंत में, निम्नलिखित तार को अंतिम मोड़ के ENDस्ट्रिंग के बाद पारित किया जाएगा , जो सभी को सूचित करता है कि कौन जीवित है:
END_DAY [Day #] [Bot 1 Status] [Bot 2 Status]
जहां स्थिति किसी भी A(जीवित) या D(मृत) की अल्पविराम से अलग की गई सूची है । अगले दिन के तुरंत बाद शुरू होता है।
जब 6 से कम जीवित नौकर होते हैं तो अनुकरण समाप्त हो जाता है। आपका कार्यक्रम अनुकार के अंत में निम्नलिखित इनपुट प्राप्त करेगा:
EXIT
नियमों / विवरण
- केवल उन स्थानों पर जाता है जहां आपकी क्रिया है
S, तो आप खजाना पाएंगे। - सिमुलेशन चलाने की संख्या: 1000 बार
- आपके कार्यक्रम को चालें निर्धारित करने के लिए 1 सेकंड से अधिक नहीं लेना चाहिए।
- आपका कार्यक्रम जल्दी बाहर नहीं निकलना चाहिए; इसे ठीक एक बार शुरू किया जाएगा।
- सुनिश्चित करें कि आउटपुट बफर (यदि लागू हो) प्रत्येक आउटपुट के बाद फ्लश हो जाए।
- फ़ाइलें आपके बॉट के फ़ोल्डर (
./players/BotName/) में लिखी जा सकती हैं । आपका बॉट नाम है जो भी आप अपने बॉट का नाम रखते हैं, सभी गैर-अल्फ़ान्यूमेरिक वर्णों को हटा दिया जाता है और कैमलकेस में लिखा जाता है। प्रविष्टियां नियंत्रक के रनों के बीच डेटा को बचा सकती हैं, क्योंकि रन क्रमिक रूप से किए जाते हैं। - आपका प्रोग्राम प्राप्त करने के बाद बाहर निकलना चाहिए
EXIT। - वे प्रोग्राम जो त्रुटियों या आउटपुट को अमान्य पाठ संकलित या फेंकने में विफल होते हैं (कॉमा द्वारा अलग किए गए 5 वर्णों के प्रारूप में नहीं) को प्रतियोगिता से बाहर रखा जा सकता है। एक newline को प्रत्येक आउटपुट का पालन करना चाहिए।
- नियंत्रक GitHub पर पाया जा सकता है ।
कृपया बॉट नाम, भाषा + संस्करण, कोड और कमांड (यदि लागू हो) को संकलित करें और अपना बॉट चलाएं।
उदाहरण
कार्यक्रम द्वारा उत्पादित पाठ यहाँ उपसर्ग के साथ है a >। आपका प्रोग्राम इस चरित्र को आउटपुट नहीं करना चाहिए।
INDEX 2
START_DAY 1/3
START_TURN 1
>S,S,S,S,S
END_TURN 1 S,R,S,S,S S,S,S,S,S
START_TURN 2
>S,S,S,S,S
END_TURN 2 S,N,S,R,S S,S,S,S,S
START_TURN 3
>R,R,S,S,S
END_TURN 3 R,N,R,N,R R,R,S,S,S
START_TURN 4
>N,N,S,S,S
END_TURN 4 N,N,N,N,N N,N,S,S,S
START_TURN 5
>N,N,R,R,R
END_TURN 5 N,N,N,N,N N,N,r,r,R
END_DAY 1 A,A,A,A,A A,A,D,D,A
START_DAY 2/3
START_TURN 1
>S,S,N,S,N
END_TURN 1 R,R,R,R,R S,S,D,D,N
END_DAY 2 A,A,A,A,A D,D,D,D,D
EXIT
उपरोक्त उदाहरण के लिए अंक हैं:
Bot# Day 1 Day 2 Total
1 10 0 10
S1 1+2 0 3
S2 0 0 0
S3 1+2 0 3
S4 1 0 1
S5 1+2 0 3
2 20 0 20
S1 1+2 0 3
S2 1+2 0 3
S3 0 0 0
S4 0 0 0
S5 1+2+3+8 0 14
विजेता इसलिए खिलाड़ी है, बॉट 2. ध्यान दें कि विजेता को पूर्ण अंत तक जीवित रहने की आवश्यकता नहीं है। (यह भी ध्यान दें कि खिलाड़ी 1 दिन 30 साल की उम्र तक रह सकता था, क्योंकि शिविर तब तक पूरा नहीं होगा जब तक खिलाड़ी एक और बॉट वापस नहीं भेज देता)।
स्कोर
Bot Score
Bob 2939.422
Statisticians 2905.833
Morning Birds 1652.325
Evolved 1578.285
Slow Returners 1224.318
Wandering Fools 1065.908
Randomizers 735.313
Drunkards 0
Plague 0
लॉग गिटहब पर उपलब्ध हैं । प्रत्येक परीक्षण के परिणाम इस Google स्प्रेडशीट पर उपलब्ध हैं ।