आपका काम एक RoboZZle दुभाषिया लिखना है। यदि आप खेल से परिचित नहीं हैं, तो कृपया robozzle.com पर वीडियो देखें या नीचे मेरा विवरण पढ़ें।
एक रोबोट वर्ग के आयताकार ग्रिड पर रहता है, जो लाल, हरा, नीला या काला रंग का होता है। काले वर्ग दुर्गम हैं। अन्य सुलभ हैं और उनमें से कुछ में एक तारा है। लक्ष्य काले वर्गों पर कदम के बिना या नक्शे से गिरने के बिना सभी सितारों को इकट्ठा करना है। रोबोट एक वर्ग पर कब्जा कर लेता है और एक विशेष दिशा का सामना करता है - बाएं, दाएं, ऊपर, या नीचे। यह विधानसभा जैसे निर्देशों को सबरूटिन एफ 1, एफ 2, ..., एफ 5 में वर्गीकृत करता है। एक निर्देश एक विधेय की एक जोड़ी है ("कोई नहीं", "अगर लाल पर", "अगर हरे पर", "अगर नीले पर") और एक क्रिया ("आगे बढ़ो", "बाएं मुड़ें", "दाएं मुड़ें"), "वर्तमान वर्ग लाल पेंट करें", "इसे हरा रंग दें", "इसे नीले रंग में रंग दें", "कुछ भी नहीं करें", "एफ 1 को कॉल करें", ..., "कॉल एफ 5")। सबरूटीन को कॉल एक स्टैक का उपयोग करते हैं और पुनरावर्ती हो सकते हैं। पारंपरिक प्रोग्रामिंग की तरह, एक सबरूटीन के अंतिम निर्देश के पूरा होने के बाद, निष्पादन उस बिंदु से किया जाता है, जहां सबरूटीन कहा जाता था। निष्पादन एफ 1 के पहले निर्देश से शुरू होता है और तब तक जारी रहता है जब तक कि रोबोट सितारों के साथ सभी वर्गों का दौरा नहीं कर लेता है, या जब रोबोट एक काले वर्ग या नक्शे के बाहर कदम रखता है, या 1000 निर्देशों को निष्पादित किया गया है (असफल विधेय और "कुछ भी नहीं" क्रियाओं को निष्पादित किया गया है) गिनती न करें), या निष्पादित करने के लिए और अधिक निर्देश नहीं हैं (स्टैक अंडरफ्लो)।
इनपुट:
a
- एक 12x16 वर्ण मैट्रिक्स (जैसा कि आमतौर पर आपकी भाषा में दर्शाया जाता है, उदाहरण के लिए स्ट्रिंग का सरणी) जो एक नक्शे को एन्कोड करता है - एक'#'
दुर्गम (काले) वर्गों के लिए,'*'
एक स्टार के साथ वर्गों के'.'
लिए, बाकी के लिएc
- सुलभ वर्गों के रंगों का वर्णन करने वाला एक 12x16 वर्ण मैट्रिक्स -'R'
(लाल),'G'
(हरा), या'B'
(नीला)। दुर्गम वर्गों को तीनों से एक मनमाना पत्र द्वारा दर्शाया जाएगा।y
औरx
- रोबोट की 0-आधारित पंक्ति और स्तंभ;a[y][x]
होने की गारंटी है'.'
d
- दिशा रोबोट है सामना:0 1 2 3
अधिकार के लिए, नीचे, अर्थात की ओर बाएं, ऊपर(y,x+1)
,(y+1,x)
,(y,x-1)
,(y-1,x)
f
- एक एकल स्ट्रिंग, एफ 1 ... एफ 5 का संक्षिप्त कार्यान्वयन। प्रत्येक क्रियान्वयन एक (संभवतः खाली) अनुक्रम-एक्शन जोड़े (सबरूटीन में अधिकतम 10 जोड़े) पर है, जिसे एक के साथ समाप्त किया गया है'|'
।विधेय:
'_'
कोई नहीं,'r'
लाल,'g'
हरा,'b'
नीलाकार्रवाई:
'F'
आगे बढ़ो,'L'
बाएं मुड़ें,'R'
दाएं मुड़ें,'r'
लाल'g'
रंग, हरे'b'
रंग को पेंट'1'
करें , नीले रंग को पेंट करें, एफ 1 को कॉल करें ...,'5'
एफ 5 को कॉल करें,'_'
कुछ भी न करें
आपको ऊपर दिए गए इनपुट्स का नाम नहीं देना है, लेकिन उनके मान निर्दिष्ट होने चाहिए।
आउटपुट: 1
(या true
) यदि रोबोट नियमों के अनुसार सभी तारों को इकट्ठा करता है, 0
( false
) अन्यथा।
उदाहरण :
a=["################","################","##*....*...*#.##","##.####.#####.##","##.####.#####.##","##.####*...*#.##","##.########.####","##*........*#.##","################","################","################","################"]
c=["RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR","RRRBBBBRGGGGRRRR","RRBRRRRGRRRRRRRR","RRBRRRRGRRRRRRRR","RRBRRRRRGGGBRRRR","RRBRRRRRRRRGRRRR","RRRBBBBGGGGBRBRR","RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR"]
y=2; x=6; d=2
// and then depending on "f":
f="_FrLg2_1|_FbLrR_2||||" // result:1
f="_FrRg2_1|_FbLrR_2||||" // result:0 (stepped on a black square)
f="_FrLrL_1|_FbLrR_2||||" // result:0 (1000-step limit exceeded)
f="_FrLg2__|________||||" // result:0 (stack underflow)
एक और उदाहरण , जिसमें "पेंट" निर्देश शामिल हैं:
a=["#***************","#*###*###*###*##","#*###*###*###*##","***#***#***#***#","***#***#***#***#","*###*###*###*###","***#***#***#***#","***#***#***#***#","***#***#***#***#","*###*###*###*###","*.*#***#***#***#","***#***#***#***#"]
c=["RGGGGGGGGGGGGGGG","RBRRRGRRRGRRRGRR","RBRRRGRRRGRRRGRR","RBRRGGGRGGGRGGGR","BRRRGGGRGGGRGGGR","BRRRGRRRGRRRGRRR","BRRRGGGRGGGRGGGR","RBRRGGGRGGGRGGGR","BRRRGGGRGGGRGGGR","BRRRGRRRGRRRGRRR","BGRRGGGRGGGRGGGR","RBRRGGGRGGGRGGGR"]
y=10; x=1; d=0
f="_2_R_R_1|_FgRgFgFg3rRr4b2_Fgb|_F_F_R|_2_L_r||"
// result:1
अपना स्वयं का परीक्षण उत्पन्न करने के लिए, robozzle.com पर सूची से एक पहेली पर जाएं , इसे हल करने का प्रयास करें (या इसे हल न करें), अपने ब्राउज़र में F12 दबाएं, JS कंसोल में टाइप करें:
r=robozzle;s=JSON.stringify;with(r.level)console.log('a='+s(Items)+'\nc='+s(Colors)+'\ny='+RobotRow+'\nx='+RobotCol+'\nd='+RobotDir+'\nf='+s(r.encodeSolution()))
और आपकी भाषा के लिए परिणाम को पुन: स्वरूपित करता है।
सबसे छोटी जीत। कोई खामियां नहीं।