प्लॉट : जिमी गायब है; हमें उसे ढूंढना होगा। हमें अलग हो जाना चाहिए।
प्लॉट ट्विस्ट : जिमी पहले ही मर चुका है।
लेकिन, हमारे कलाकारों को यह पता नहीं है, इसलिए उन्हें वैसे भी पूरे क्षेत्र की खोज करने की आवश्यकता है। कोशिकाओं का एक N कॉलम x M पंक्तियाँ (1 <= M, N <= 256) है, या तो "S" को शुरुआती बिंदु के लिए चिह्नित किया गया है। एक बाधा के लिए खुली जगह, या "#" के लिए। यह नक्शा है ।
0 <= p <= 26 कॉस्टार , 0 <= q <= 26 एक्स्ट्रा , और 1 स्टार हैं । हर कोई शुरू में एस चिह्नित सेल में है।
नियम
प्रत्येक व्यक्ति को नीचे दिखाया गया एक दृष्टि त्रिज्या है:
...
.....
..@..
.....
...
स्टार को "@", "ए" के साथ शुरू होने वाले कैपिटल अक्षरों से लागत और लोअरकेस अक्षरों द्वारा एक्स्ट्रा द्वारा "ए" के साथ शुरू किया जाता है। प्रारंभ में, शुरुआती बिंदु के आसपास का दृश्य त्रिज्या पहले से ही खोजा गया है। यदि यह मानचित्र के पूरे खुले स्थान का गठन करता है, तो खेल समाप्त हो जाता है। प्रत्येक क्रम, निम्नलिखित क्रम में :
- प्रत्येक व्यक्ति एक साथ एक राजा को स्थानांतरित करता है (या तो अभी भी खड़ा है, या 8 पड़ोसी कोशिकाओं में से एक पर जा रहा है)।
- प्रत्येक व्यक्ति के चारों ओर दृष्टि त्रिज्या की सभी कोशिकाओं को खोजा गया।
- अगर कोई कॉस्टार किसी और को नहीं देख सकता है, तो वह मर जाती है। यदि कोई अतिरिक्त कोस्टार, स्टार, या कम से कम 2 अन्य एक्स्ट्रा कलाकार नहीं देख सकता है, तो वह मर जाता है। ये एक साथ होते हैं - अर्थात, एक ही मोड़ पर मौतों की कोई श्रृंखला प्रतिक्रिया नहीं हो सकती है; उपरोक्त शर्तों की जाँच की जाती है, और जो कोई भी मरने वाला है वह एक ही बार में मर जाता है।
- यदि मानचित्र पर सभी खुले स्थान खोजे गए हैं, तो खोज समाप्त हो गई है।
टिप्पणियाँ
कई लोग किसी भी बिंदु पर एक ही वर्ग में हो सकते हैं, और ये लोग एक दूसरे को देख सकते हैं।
बाधाएँ दृष्टि को कभी बाधित नहीं करती हैं, केवल गति करती हैं; लोग एक दूसरे को देख सकते हैं, एर ... लावा?
नक्शे पर खुले स्थान को राजा की चाल से जुड़े रहने की गारंटी है।
प्रारंभिक "एस" को एक बाधा के बजाय खुली जगह माना जाता है।
कोई भी राजा चलता है कि एक खुले स्थान पर भूमि वैध है। उदाहरण के लिए, निम्नलिखित चाल कानूनी है:
.... ....
.@#. ---> ..#.
.#.. .#@.
.... ....
इनपुट
इनपुट प्रारूप में होगा
N M p q
[N cols x M rows grid with characters ".", "#", and "S"]
नमूना जानकारी:
6 5 0 0
......
......
..S...
......
......
तथा
9 9 1 1
S.......#
.......##
......##.
..#####..
...##....
...##....
...#.....
....#..#.
.........
p और q क्रमशः कोस्टार और एक्स्ट्रा की संख्या हैं।
उत्पादन
आउटपुट होना चाहिए, प्रत्येक मोड़ के लिए, जो चालें बनाई जाती हैं, उनके द्वारा निर्देशित दिशाओं के साथ
789
456
123
चालों का क्रम मायने नहीं रखता, क्योंकि वे सभी एक साथ लागू होते हैं। किसी व्यक्ति के लिए एक चाल को सूचीबद्ध नहीं करना ठीक है, और उसे दिशा में ले जाने के बराबर है। 5. निम्नलिखित प्रारूप में सूचीबद्ध होना चाहिए:
@9 A2 a2 B7.
"।" एक मोड़ के लिए अपनी चाल के अंत को दर्शाता है।
मानचित्र खोजे जाने के बाद, आउटपुट की अंतिम पंक्ति तीन पूर्णांक होनी चाहिए, रिक्त स्थान से अलग: मोड़ की संख्या जो आपको बोर्ड को खोजने के लिए समाप्त हुई, जीवित कॉस्टरों की संख्या, और जीवित एक्स्ट्रा कलाकार की संख्या। पहला उदाहरण इनपुट के लिए
6 5 0 0
......
......
..S...
......
......
निम्नलिखित मान्य आउटपुट है:
@4.
@6.
@6.
@6.
4 0 0
एक अंतिम नोट: तारा मर नहीं सकता है और नक्शे पर खुली जगह जुड़ा होने की गारंटी है, इसलिए खोज हमेशा सफल होगी।
स्कोरिंग
आपका स्कोर बेंचमार्क परीक्षणों के एक सेट पर ले जाने की कुल संख्या है ; आप अपने जवाब के साथ अपना खुद का परीक्षण मामला प्रस्तुत करने के लिए स्वागत करते हैं। बेंचमार्क सेट पर रहने वाले कॉस्टरों की संख्या का योग टाई-ब्रेकर के रूप में उपयोग किया जाएगा, और घटना में अभी भी एक टाई है, जीवित एक्स्ट्रा कलाकार की संख्या का उपयोग किया जाएगा।
परीक्षण सेट और नियंत्रक
वर्तमान में, 5 नक्शे https://github.com/Tudwell/HorrorMovieSearchParty/ पर ऑनलाइन हैं । जवाब प्रस्तुत करने वाला कोई भी व्यक्ति एक परीक्षण मामला प्रस्तुत कर सकता है, जिसे मैं किसी भी कारण से अस्वीकार करने का अधिकार सुरक्षित रखता हूं (यदि मैं किसी कारण से आपके नक्शे को अस्वीकार करता हूं, तो आप दूसरा प्रस्तुत कर सकते हैं)। इन्हें मेरे विवेक पर निर्धारित परीक्षण में जोड़ा जाएगा।
एक पायथन (2.7.5 में परीक्षण किया गया) नियंत्रक को जीआईटीबी पर कंट्रोलरहोम के रूप में प्रदान किया गया है । एक दूसरा कंट्रोलर, कंट्रोलर_डिस्ट्रैम , एक समान है सिवाय इसके कि यह सर्च के दौरान ग्राफिकल आउटपुट दिखाता है (इसके लिए Pygame लाइब्रेरी की आवश्यकता है)।
उपयोग :
python controller.py <map file> <your execution line>
अर्थात:
python controller.py map1.txt python solver.py map1.txt
कंट्रोलर में फॉर्म का आउटपुट (आपके प्रोग्राम का स्टडिन ) है
Turn 1
@:2,3 A:2,3 B:2,3.
##...##
#ooo..#
ooooo..
ooooo..
ooooo..
#ooo...
##.....
###....
----------------------------------------
यह टर्न नंबर है (टर्न 1 आपके स्थानांतरित होने से पहले है), एक '.'- सभी एक्टर्स की समाप्ति सूची और उनके x, y निर्देशांक (ऊपरी बाएँ वर्ण है (0,0)), पूरे का एक प्रतिनिधित्व बोर्ड, और 40 'के साथ एक लाइन। यह तब फॉर्म के इनपुट (आपके प्रोग्राम के स्टडआउट से ) का इंतजार करता है
@9 A2 B7.
यह ऊपर निर्दिष्ट आउटपुट स्वरूप है। नियंत्रक खुले स्थान के लिए एक 'ओ' आउटपुट करता है जिसे खोजा गया है, '।' खुले स्थान के लिए जिसे खोजा नहीं गया है, और बाधाओं के लिए '#'। इसमें केवल लोगों की सूची में रहने वाले लोग और उनके निर्देशांक शामिल हैं, और खेल के सभी नियमों को ट्रैक करता है। यदि अवैध चालन का प्रयास किया जाता है तो नियंत्रक बाहर निकल जाएगा। यदि किसी दिए गए मोड़ के लिए खोज समाप्त हो जाती है, तो आउटपुट ऊपर नहीं है; इसके बजाय यह रूप का है
Finished in 4 turns
4 1 0
यहां "4 1 0" 4 कुल मुड़ता है, 1 जीवित कोस्टार, और 0 जीवित एक्स्ट्रा कलाकार को दर्शाता है। आपको नियंत्रक का उपयोग करने की आवश्यकता नहीं है; बेझिझक इसका उपयोग करें या इसे अपनी प्रविष्टि के लिए संशोधित करें। यदि आप इसका उपयोग करने और समस्याओं का सामना करने का निर्णय लेते हैं, तो मुझे बताएं।
नियंत्रक लिखने में मेरी मदद करने के लिए @githubphagocyte का धन्यवाद।
संपादित करें: यादृच्छिक प्रविष्टि के लिए, आप किसी विशेष मानचित्र पर किसी भी रन को उस मानचित्र के लिए अपने स्कोर के रूप में चुन सकते हैं। ध्यान दें कि स्कोरिंग आवश्यकताओं के कारण, आपको हमेशा सबसे छोटा मोड़ चुनना चाहिए, फिर सबसे कम मृत कॉस्टार, फिर प्रत्येक नक्शे के लिए सबसे कम मृत एक्स्ट्रा कलाकार।