आप दो शहरों के बीच रेगिस्तान को पार करते हुए एक यात्री हैं। आप बिना रुके पर्याप्त पानी नहीं ले जा सकते। यह एक क्लासिक पहेली का रूपांतर है।
नियम
एक रेगिस्तान इस तरह दिखता है: ज्यादातर खाली जगह का एक WxH ग्रिड। चिन्हित स्थान वह जगह S
है जहाँ आप शुरू करते हैं, E
वह स्थान है जहाँ आप समाप्त करना चाहते हैं, और एन के साथ चिह्नित एक वर्ग पानी की एन इकाइयों को धारण करता है। वर्गों को एक .
पकड़ शून्य पानी के साथ चिह्नित किया गया है ।
.....................................
........S............................
.....................................
.........7...........................
.....................................
.......................3.............
.....5...............................
................................2....
.....................................
.....................................
.....................................
...............................E.....
.....................................
....................7................
.....................................
.....................................
आप 5 यूनिट पानी के साथ S पर शुरू करते हैं।
आप अधिकतम 5 यूनिट पानी ले जा सकते हैं।
प्रत्येक तुम बारी
- एक वर्ग ऊपर, नीचे, बाएँ, या दाएँ,
- 1 यूनिट पानी का उपभोग करें जिसे आप ले जा रहे हैं,
- लेने या ड्रॉप पानी की इकाइयों में से कुछ संख्या।
एक बारी इस प्रकार notated है: (direction)(+|-)(units of water)
, +
यह संकेत करता है कि आप पानी उठा रहे हैं, -
कि आप इसे छोड़ रहे हैं।
उदाहरण बदल जाता है:
D+0 Move Down
R+0 Move Right
D+2 Move Down, pick up two units of water.
U-1 Move Up, drop one unit of water.
यदि आप उपरोक्त उदाहरण में S से शुरू होने वाली इन चालों को करते हैं, तो रेगिस्तान बाद में इस तरह दिखता है।
.....................................
........S............................
.........1...........................
.........5...........................
.....................................
.......................3.............
.....5...............................
................................2....
.....................................
.....................................
.....................................
...............................E.....
.....................................
....................7................
.....................................
.....................................
आप अपने वर्ग पर पहले से ही अधिक पानी नहीं उठा सकते हैं। जब आप पानी उठाते हैं, तो टाइल की गिनती से इकाइयों की संख्या घटाएं।
आप अधिकतम 5 इकाइयों को रखने के लिए केवल पानी उठा सकते हैं।
कोई भी टाइल 9 यूनिट से अधिक नहीं रख सकती है, सिवाय इसके कि अनंत यूनिट रखती है।
आप केवल उतना पानी गिरा सकते हैं जितना आप वर्तमान में पकड़ रहे हैं।
जमीन पर पानी अपरिवर्तित रहता है जब तक आप इसे फिर से नहीं उठाते।
यदि आप S पर लौटते हैं तो आप पानी की किसी भी मात्रा को बिना गिराए उठा सकते हैं।
यदि आप ई तक पहुंचते हैं तो आप जीत जाते हैं । यदि आप E पर पानी की अंतिम इकाई का उपभोग करते हैं तो भी आप जीत जाते हैं।
यदि, आपकी बारी के बाद, आपके पास शून्य पानी है और आप ई पर नहीं हैं, तो आप मर जाते हैं ।
इनपुट और आउटपुट
आपके कार्यक्रम को STDIN
उपरोक्त प्रारूप में ASCII कला के रूप में मनमाने आकार का एक प्रारंभिक मानचित्र प्राप्त होगा । आप मान सकते हैं कि यह आयताकार है अर्थात सभी रेखाएँ समान लंबाई की हैं, ठीक एक S
और एक E
वर्ग है, सभी रेखाएँ समाप्त हो गई हैं \n
, और पूरा STDIN इस रेगेक्स के अनुरूप होगा:/^[SE1-9\.\n]+$/
आपका कार्यक्रम STDOUT को निम्नलिखित आउटपुट लिखेगा:
- चाल की सूची,
- नक्शे की अंतिम स्थिति।
आप किसी भी सुविधाजनक प्रारूप में चालों की सूची को आउटपुट कर सकते हैं।
नक्शे की अंतिम स्थिति इनपुट के रूप में उसी प्रारूप में मुद्रित की जाएगी, सिवाय इसके कि यह आपके द्वारा देखे गए मार्ग को अतिरिक्त रूप से उस मार्ग को दिखाएगा, जिसके साथ सभी विज़िट की गई टाइलों को चिह्नित करके #
, यदि उस टाइल में पानी नहीं है और वह S या E नहीं है (यानी यह .
) है।
उदाहरण इनपुट:
.....S.
.......
.......
E......
....8..
उदाहरण जीतने के उत्पादन:
D+0
D+0
D+0
D+0
L+5
L+0
L+0
L+0
L+0
U+0
.....S.
.....#.
.....#.
E....#.
####3#.
Nontriviality
जब आप अपना कोड पोस्ट करते हैं, तो एक नमूना मानचित्र इनपुट पोस्ट करें जो आपका कोड एक समाधान ढूंढता है जिसके लिए निम्नलिखित गैर-तुच्छ परिस्थितियों को संतुष्ट करता है:
- S और E कम से कम 10 चालों के हैं।
- कोई भी वर्ग जिसमें शुरू में पानी की एन इकाइयाँ होती हैं, को एक एन-चौड़ाई सीमा से घिरा होना चाहिए जिसमें सभी वर्ग हैं
.
(कोई पानी नहीं, या पूरी तरह से नहीं)
उदाहरण
........2.
..........
..........
S.1..2....
..........
..........
........1.
..3.......
.........E
यदि आप किसी टाइल पर पानी की मात्रा बढ़ाते हैं, तो उपरोक्त तुच्छ हो जाता है।
आवश्यकताएँ
संभवत: आपका कार्यक्रम समाधान खोजने से पहले कई असफल प्रयासों का सामना करेगा, यदि कोई हो।
- आपके कार्यक्रम को अंततः किसी भी हल करने योग्य इनपुट को हल करना होगा।
- मैं आपको मरते हुए देखना चाहता हूं - आपका कार्यक्रम मार्ग की चालों और अंतिम नक्शे को एक- एक करके हर समाधान का असफल प्रयास करने के लिए तैयार करेगा।
- यदि आप एक विजेता समाधान का सामना करते हैं, तो उसके लिए पूर्ण आउटपुट प्रिंट करें और समाप्त करें।
- समाधान मिलने तक दौड़ें, लेकिन दो बार एक ही समाधान का प्रयास न करें - सभी मौतें अलग-अलग मार्गों से होनी चाहिए।
- यह एक परीक्षण इनपुट का उपयोग करें:
(यह कुछ midpoint पर एक पानी कैश ड्रॉप करने के लिए कम से कम एक कदम की आवश्यकता है)।
S........
.........
.........
........E
सबसे छोटा कोड जो एक गैर-तुच्छ प्रदर्शन इनपुट के साथ पोस्ट किया जाता है जिसे वह जीतता है।