इस चुनौती में, आपको पेट्री-डिश क्षेत्र में मौत से लड़ने के लिए एकल-कोशिका वाले जीवों की एक प्रजाति डिज़ाइन करनी चाहिए। अखाड़े को एक आयताकार ग्रिड के रूप में दर्शाया जाता है, जहाँ प्रत्येक कोशिका एक स्थान पर रहती है:
.....x....
...x...o..
...x.c..o.
.......o..
गुण
हर सेल में तीन विशेषताएँ होती हैं। खेल की शुरुआत में अपनी सेल प्रजातियों को निर्दिष्ट करते समय, आप इन विशेषताओं के बीच 12 अंक आवंटित करते हैं।
- हिट पॉइंट्स (HP): यदि किसी सेल का HP शून्य हो जाता है, तो उसकी मृत्यु हो जाती है। नई कोशिकाओं में पूर्ण एचपी होता है।
- जब एक कोशिका मर जाती है, तो यह एक लाश के पीछे छोड़ देता है जिसे ऊर्जा के लिए अन्य कोशिकाओं द्वारा खाया जा सकता है।
- एक सेल खोए हुए एचपी को पुनः प्राप्त नहीं कर सकता है, लेकिन यह विभाजित करके पूर्ण एचपी के साथ एक नया सेल बना सकता है।
- ऊर्जा : अधिकांश क्रियाएं एक सेल को ऊर्जा की आवश्यकता हो सकती है। सक्रिय रूप से आराम करने से, एक कोशिका खोई हुई ऊर्जा को अधिकतम प्रजातियों तक प्राप्त कर सकती है।
- 5 से कम ऊर्जा वाले एक सेल प्रजाति के विफल होने की संभावना है, क्योंकि यह नई कोशिकाओं को बनाने के लिए विभाजित नहीं कर सकता है।
- एक सेल अपनी प्रजातियों के अधिकतम मूल्य से परे ऊर्जा प्राप्त नहीं कर सकता है।
- एक नई बनाई गई सेल में एक प्रारंभिक ऊर्जा मूल्य है जिसे उसके मूल (और इसकी प्रजाति विनिर्देश द्वारा निर्धारित अधिकतम मूल्य) से कॉपी किया गया है।
- अम्लता : यदि कोई कोशिका विस्फोट करना चाहती है, तो कोशिका की अम्लता का स्तर आसन्न कोशिकाओं की क्षति की गणना करने में उपयोग किया जाता है।
क्रिया
प्रत्येक मोड़, प्रत्येक कोशिका एक क्रिया कर सकती है:
चाल: सेल 1 ऊर्जा की लागत पर किसी भी दिशा (एन / एस / ई / डब्ल्यू / एनई / एनडब्ल्यू / एसई / एसडब्ल्यू) में एक स्थान को स्थानांतरित करता है।
- एक सेल दूसरे जीवित सेल के कब्जे वाले स्थान पर नहीं जा सकता है।
- एक सेल ग्रिड से दूर नहीं जा सकता है।
- एक कोशिका लाश पर घूमना लाश को नष्ट कर देता है।
हमला: एक सेल एक आसन्न कोशिका पर हमला करता है, जो 1 से 3 ऊर्जा बिंदुओं को जोड़कर, 1 से 3 क्षति से निपटता है।
- एक सेल किसी भी दिशा (एन / एस / ई / डब्ल्यू / एनई / एनडब्ल्यू / एसई / एसडब्ल्यू) में हमला कर सकता है।
- यह अनुकूल कोशिकाओं पर हमला करने के लिए कानूनी है।
डिवाइड: कोशिका विभाजित होती है और 5 ऊर्जा की लागत पर आसन्न स्थान पर एक नया सेल बनाती है।
- एक सेल किसी भी दिशा (N / S / E / W / NE / NW / SE / SW) में विभाजित हो सकता है।
- नए सेल में आपके मूल सेल विनिर्देश के अनुसार पूर्ण एचपी है।
- नई कोशिका में उतनी ही ऊर्जा होती है जितनी उसके मूल कोशिका में विभाजन लागत को घटाने के बाद होती है। (उदाहरण के लिए, प्रारंभिक 8 ऊर्जा बिंदुओं वाला एक मूल सेल 3 ऊर्जा तक कम हो जाएगा और 3 ऊर्जा के साथ एक बाल कोशिका का उत्पादन होगा)।
- एक नया सेल आपके अगले मोड़ तक कार्य नहीं कर सकता है।
- एक सेल एक जीवित कोशिका के कब्जे वाले स्थान में विभाजित नहीं हो सकता है, लेकिन यह एक मृत कोशिका लाश द्वारा कब्जा किए गए स्थान में विभाजित कर सकता है (यह लाश को नष्ट कर देता है)।
खाओ: एक कोशिका एक आसन्न कोशिका लाश खाती है, 4 ऊर्जा प्राप्त करती है।
- एक सेल किसी भी दिशा (एन / एस / ई / डब्ल्यू / एनई / एनडब्ल्यू / एसई / एसडब्ल्यू) में खा सकता है।
आराम करें: एक सेल एक मोड़ के लिए कुछ भी नहीं करता है, जिसमें 2 ऊर्जा होती है।
विस्फोट: जब किसी कोशिका में HP की तुलना में 3 या उससे कम HP और अधिक ऊर्जा होती है, तो वह विस्फोट हो सकता है, जिससे आस-पास के सभी आठ कोशिकाओं को नुकसान हो सकता है।
- प्रत्येक आसन्न कोशिका को नुकसान होता है
(exploding cell HP) + (explodng cell acidity) - एक विस्फोट कोशिका एक लाश के पीछे मर जाती है और विस्फोट के दौरान किसी भी कोशिका को मार देती है।
- प्रत्येक आसन्न कोशिका को नुकसान होता है
मसविदा बनाना
सेट अप
आपका कार्यक्रम BEGINस्टड पर दिए गए स्ट्रिंग के साथ चलेगा । आपके प्रोग्राम को 3 गैर-नकारात्मक पूर्णांकों की अंतरिक्ष-अलग-अलग सूची को रोकने के लिए लिखना चाहिए, जो आपके सेल प्रजातियों के लिए एचपी, ऊर्जा और अम्लता का प्रतिनिधित्व करता है: जैसे 5 6 1,। संख्या 12 तक होनी चाहिए 0। यदि आप चाहें तो अम्लता हो सकती है । (अन्य विशेषताएं भी शून्य हो सकती हैं, लेकिन ऐसा करना कार्यात्मक रूप से खेल को रोक देता है!)
आप एक सेल से शुरू करते हैं, उत्तर-पश्चिम या दक्षिण-पूर्व कोने में, या तो किनारे से एक स्थान दूर। शुरुआत सेल में पूर्ण एचपी और ऊर्जा है।
हर कोशिका कार्य करती है
हर मोड़, आपके कार्यक्रम को आपकी टीम के प्रत्येक सेल के लिए एक बार आमंत्रित किया जाएगा (कोशिकाओं को छोड़कर सिर्फ इस मोड़ को बनाया गया है) ताकि सेल कार्य कर सके। आपका कार्यक्रम स्टड पर डेटा के साथ प्रदान किया जाता है जिसमें पेट्री डिश राज्य और इस विशेष सेल के बारे में जानकारी शामिल है:
10 4
..........
..xx.c....
...c...o..
......o...
6 3 5 7
पहले दो नंबर अखाड़ा की चौड़ाई और ऊँचाई को दर्शाते हैं: यहाँ, 10-बाय -4 अखाड़ा है।
oकोशिकाओं तुम्हारा कर रहे हैं;xकोशिकाओं अपने दुश्मन हैं। (यह हमेशा सच होता है; प्रत्येक खिलाड़ी हमेशा अपनी स्वयं की कोशिकाओं को देखता हैo।).रिक्त स्थान खाली हैं।cरिक्त स्थान खाद्य सेल लाशों प्रतिनिधित्व करते हैं।
खाली पंक्ति के बाद वाले नंबर इस सेल के बारे में जानकारी का प्रतिनिधित्व करते हैं:
- पहले दो नंबर
x,yनिर्देशांक हैं,0,0शीर्ष बाईं ओर से अनुक्रमित (इसलिए6 3यहां दक्षिण-सबसेoसेल को संदर्भित करता है )। - तीसरा नंबर सेल का एचपी है; चौथा नंबर कोशिका की ऊर्जा है।
आपके प्रोग्राम को एक कार्रवाई के लिए (स्टडआउट को) आउटपुट देना चाहिए। नीचे दिए गए उदाहरणों में, हम Nएक उदाहरण दिशा के रूप में उपयोग करेंगे, लेकिन यह उस कार्रवाई ( N/ S/ E/ W/ NE/ NW/ SE/ SW) के लिए कोई भी कानूनी दिशा निर्देश हो सकता है । सभी प्रोग्राम आउटपुट केस-असंवेदनशील है, लेकिन उदाहरण अपरकेस का उपयोग करेंगे। कोई भी आउटपुट एक्शन जो अमान्य है (या तो क्योंकि इसमें सिंटैक्स अमान्य है या एक गैरकानूनी कार्रवाई का प्रयास करता है) को नजरअंदाज किया जाता है और सेल RESTआईएनजी में परिणाम होता है (और इस प्रकार 2 ऊर्जा प्राप्त होती है)।
MOVE NDIVIDE NEAT NATTACK N 2- संख्या हमले की ताकत का प्रतिनिधित्व करती है (1 - 3)RESTEXPLODE
आपकी टीम की बारी में आपके सभी कक्षों को एक-एक करके कार्य करने का अवसर दिया जाता है। आपके सभी सेल किसी भी प्रतिद्वंद्वी सेल के कार्य करने से पहले कार्य करते हैं। एक बार जब आपके सभी सेल कार्य करते हैं, तो आपकी बारी समाप्त हो जाती है, और आपके प्रतिद्वंद्वी की बारी शुरू होती है। एक बार जब आपके सभी प्रतिद्वंद्वी सेल काम करते हैं, तो आपकी बारी फिर से शुरू होती है। आपकी बारी के भीतर, प्रत्येक सेल को उसकी उम्र के आधार पर कार्य करने के लिए प्राथमिकता दी जाती है: आपकी टीम की सबसे पुरानी कोशिकाएं युवा कोशिकाओं से पहले कार्य करती हैं।
उदाहरण
यहां बताया गया है कि कोई प्रोग्राम कैसे व्यवहार कर सकता है। स्टड से इनपुट को यहां प्रमुख >तीर (एक स्पष्ट स्थान द्वारा वास्तविक इनपुट से अलग) के साथ चिह्नित किया गया है और स्टडआउट पर आउटपुट में <तीर हैं।
> BEGIN
< 5 6 1
फिर, कार्यक्रम फिर से शुरू किया गया है:
> 10 4
> ..........
> .o........
> ........x.
> ..........
>
> 1 1 5 6
< DIVIDE SE
आपके प्रतिद्वंद्वी की बारी के बाद (जिसने DIVIDE Wएकल शुरुआत सेल के साथ फैसला किया ), आपके कार्यक्रम को दो बार, प्रत्येक सेल के लिए एक बार आमंत्रित किया जाता है:
> 10 4
> ..........
> .o........
> ..o....xx.
> ..........
>
> 1 1 5 1
< MOVE E
अपनी बारी के दूसरे आह्वान के लिए:
> 10 4
> ..........
> ..o.......
> ..o....xx.
> ..........
>
> 2 2 5 1
< MOVE SE
ध्यान दें कि यह दूसरा सेल आपकी बारी से पहले दूसरे सेल के मूवमेंट के आधार पर अपडेटेड बोर्ड स्टेट को देखता है। यह भी ध्यान दें कि इस सेल को 1 ऊर्जा के साथ बनाया गया है, क्योंकि मूल कोशिका में 6 ऊर्जा होती है जब उसने विभाजन को अंतिम रूप दिया (इसलिए मूल 6, विभाजन की 5-ऊर्जा लागत घटाकर 1 ऊर्जा के साथ एक बाल कोशिका बनाई)।
अब आपकी बारी है और आपके प्रतिद्वंद्वी की बारी शुरू होती है। दो विरोधी कोशिकाओं को कार्य करने का मौका दिया जाएगा, और फिर आपकी अगली बारी शुरू होगी।
विजय
आप दोनों में से जीत सकते हैं:
- सभी विरोधी कोशिकाओं को नष्ट करना, या
- प्रत्येक खिलाड़ी द्वारा 150 टर्न पूरा करने के बाद अपने प्रतिद्वंद्वी से अधिक सेल होना
स्कोरिंग एक दूसरे को जमा करने के खिलाफ 100 खेलों में जीत की संख्या पर आधारित होगी। आधे सिमुलेशन में, आपके कार्यक्रम को पहले जाने की अनुमति होगी।
टाई गेम्स (यानी 150 बारी के बाद कोशिकाओं की समान संख्या, या केवल शेष कोशिकाओं को एक विस्फोट में एक साथ मार दिया जाता है) को किसी भी खिलाड़ी के जीत योगों में नहीं गिना जाता है।
अन्य सूचना
- आपके कार्यक्रम को राज्य बनाए रखने का प्रयास नहीं करना चाहिए (पेट्री डिश की स्थिति का उपयोग करने से परे): एककोशिकीय जीवों में बहुत अच्छी स्मृति नहीं होती है और पल-पल पर दुनिया की प्रतिक्रिया होती है। विशेष रूप से, एक फ़ाइल (या अन्य डेटा स्टोर) पर लिखना, एक दूरस्थ सर्वर के साथ संचार करना, या पर्यावरण चर सेट करना स्पष्ट रूप से अस्वीकृत है।
- प्रस्तुतियाँ Ubuntu 12.04.4 पर चलाई / संकलित की जाएंगी।
- 100 स्कोरिंग खेलों की बारीकियों की अभी पुष्टि नहीं हुई है, लेकिन वे कई अखाड़ों के आकार (उदाहरण के लिए, एक छोटे अखाड़े पर 50 रन और एक बड़े क्षेत्र पर 50 रन) को शामिल करेंगे। एक बड़े क्षेत्र के लिए, मैं यह सुनिश्चित करने के लिए अधिकतम मोड़ संख्या बढ़ा सकता हूं कि एक उचित लड़ाई हो सकती है।
साधन
यहाँ ड्राइवर कोड है जो सिमुलेशन को चलाता है, जिसे Node.js के लिए लिखा जाता है, द्वारा बुलाया जाता है node petri.js 'first program' 'second program'। उदाहरण के लिए, एक जावा-लिखित सेल के खिलाफ पायथन-लिखित सेल की तरह लग सकता है node petri.js 'python some_cell.py' 'java SomeCellClass'।
इसके अतिरिक्त, मैं समझता हूं कि स्टड पर कई लाइनों को पढ़ना और पार्स करना एक बहुत बड़ा दर्द हो सकता है, इसलिए मैंने विभिन्न भाषाओं में कुछ पूर्ण नमूना कोशिकाओं का मसौदा तैयार किया है, जिन्हें आप पूरी तरह से ओवरहाल, या पूरी तरह से अनदेखा करने के लिए स्वतंत्र हैं।
- जावा सेल
- अजगर कोशिका
- जावास्क्रिप्ट सेल (Node.js के साथ उपयोग के लिए)
बेशक आप एक अलग भाषा में एक सेल लिखने के लिए स्वतंत्र हैं; ये केवल तीन भाषाएं हैं जिन्हें मैंने समय-बचत सहायता के लिए बॉयलरप्लेट कोड लिखने का निर्णय लिया था।
यदि आपको ड्राइवर को चलाने में कोई समस्या है, तो इस चुनौती के लिए मेरे द्वारा बनाए गए चैट रूम में मुझे पिंग करने के लिए स्वतंत्र महसूस करें । यदि आपके पास चैट के लिए पर्याप्त प्रतिष्ठा नहीं है, तो बस एक टिप्पणी छोड़ दें।
'node c:/cell/cell_template.js'प्रत्येक तर्क के लिए पूरी तरह से रन करने योग्य कमांड निर्दिष्ट करने की आवश्यकता होगी , ठीक उसी तरह जैसे आपको'java CellTemplate'जावा कोड के लिए निर्दिष्ट करने की आवश्यकता होगी । मैं चुनौती पाठ में वह स्पष्ट कर दूँगा। यदि आपको परेशानी हो रही है, तो हम (और तकनीकी मुद्दों के साथ कोई और) इस चर्चा को एक चैट रूम में जारी रख सकते हैं जिसे मैंने अभी बनाया है ।