टीएल; डीआर: वर्णों की एक सरणी और एक रोबोट की शुरुआत की स्थिति को देखते हुए, एक एल्गोरिथ्म लिखो जो आंदोलनों के साथ एक स्ट्रिंग पढ़ सकता है (
F
"आगे बढ़ो" के लिए,R
"90 डिग्री दाएं घुमाएं" औरL
"90 डिग्री घुमाएगी" के लिए) बाएँ ") और रोबोट की समाप्ति स्थिति की गणना करें। संपूर्ण पाठ में अधिक विवरण।
हमारे पास घर पर बच्चों के लिए एक बहुत ही सरल प्रोग्राम डिवाइस है: वाहन को आगे बढ़ाने के लिए बटन के साथ एक छोटा वाहन, 90 डिग्री बाएं या 90 डिग्री दाएं मुड़ें। इसके समान कुछ:
हमारे पास इस तरह के अक्षरों के साथ एक फोम चटाई भी है:
इन सबका उद्देश्य बच्चों को एक साथ सभी वर्णमाला और प्रोग्रामिंग की अशिष्टता को सिखाना है।
चुनौती
मान लीजिए कि हमने अपने फोम मैट को इस तरह बेतरतीब ढंग से व्यवस्थित किया है:
+---+---+---+---+---+---+---+
| E | R | L | B | I | X | N |
+---+---+---+---+---+---+---+
| O | A | Q | Y | C | T | G |
+---+---+---+---+---+---+---+
| F | W | H | P | D | Z | S |
+---+---+---+---+---+---+---+
| K | V | U | M | J |
+---+---+---+---+---+
| |
+---+
मान लीजिए कि हमने वाहन को भी संशोधित किया है ताकि जब हम "आगे बढ़ें" कमांड प्रोग्राम करें, तो वाहन चटाई में एक वर्ग के आकार के आगे बढ़ता है। इसलिए, यदि वाहन U
वर्ग में है और उत्तर की ओर जाता है, तो यह P
वर्ग में बिल्कुल रुक जाता है ।
वाहन को ले जाने से पहले निर्देश सभी को दिए गए हैं, और वे हैं:
F
: वाहन अगले वर्ग में आगे बढ़ता है।R
: वाहन अपनी जगह (कोई और गति नहीं) में 90 डिग्री सही जाता है।L
: वाहन अपनी जगह (कोई और गति नहीं) में 90 डिग्री को छोड़ देता है।
निर्देश दिए जाने के बाद, आप "GO" बटन दबा सकते हैं और वाहन को दिए गए स्थान पर भेज सकते हैं क्योंकि यह दिए गए क्रम में प्रत्येक निर्देश का पालन करेगा। तो, आप बच्चे को दिए गए पत्र पर जाने के लिए वाहन के लिए आवश्यक निर्देश सम्मिलित करने के लिए कह सकते हैं।
आपको सबसे छोटा प्रोग्राम / फ़ंक्शन लिखना होगा string
जो निर्देशों के एक सेट के साथ एक (इनपुट पैरामीटर) को संसाधित करता है और उस पत्र की गणना करता है जो वाहन बंद हो जाता है (आउटपुट string
)।
विवरण:
- वाहन हमेशा निचले वर्ग में शुरू होता है, और उत्तर की ओर (
U
वर्ग की ओर )। - इनपुट स्ट्रिंग केवल अक्षर होगा
F
,R
,L
औरG
( "जाना" बटन के लिए)। आप चटाई और निर्देशों के लिए लोअरकेस अक्षरों का उपयोग कर सकते हैं, यदि आप ऐसा पसंद करते हैं। - एल्गोरिथ्म को पहले स्ट्रिंग में हर निर्देश का पालन करना चाहिए
G
(इसके बाद का हर निर्देश नजरअंदाज कर दिया जाता है क्योंकि वाहन आगे बढ़ना शुरू हो गया है)। - यदि वाहन किसी भी समय मैट से बाहर चला जाता है (भले ही इनपुट स्ट्रिंग को पूरी तरह से संसाधित नहीं किया गया है), एल्गोरिथ्म को स्ट्रिंग वापस करना होगा
Out of mat
। - यदि नहीं, तो एल्गोरिथ्म को उस वाहन को वापस करना होगा जो वाहन ने बंद कर दिया है। शुरुआती बिंदु एक
चार (या एक खाली स्ट्रिंग) के रूप में गिना जाता है ।
उदाहरण:
Input: FFG
Output: P
Input: FRFRFG
Output: Out of mat
Input: RRFFG
Output: Out of mat
Input: FFFRFFLFG
Output: X
Input: FFFRFFLF
Output: <-- Nothing or a whitespace (the robot has not started moving)
Input: FFFRRFFFG
Output: <-- Nothing or a whitespace (the robot has returned to the starting point)
Input: RRRRRLFFFLFFRFRFGFFRRGRFF
Output: L (Everything after the first G is ignored)
यह कोड-गोल्फ है , इसलिए प्रत्येक भाषा की जीत के लिए सबसे छोटा कार्यक्रम हो सकता है!
@
, प्रारंभिक स्थिति और रिक्त स्थान चटाई से दूर होने के साथ, इसलिए यह विन्यास होगाERLBIXN\nOAQYCTG\nFWHPDZS\n KVUMJ \n @
(विभिन्न रिक्ति के साथ, एसई ने इसे गड़बड़ कर दिया)