আপনার কাজটি হ'ল একটি রোবজেলা দোভাষী লিখুন। আপনি যদি গেমটির সাথে পরিচিত না হন তবে দয়া করে ভিডিওটি 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
- একটি একক স্ট্রিং, F1 ... F5 এর সংক্ষিপ্ত বাস্তবায়ন। প্রতিটি বাস্তবায়ন হ'ল প্রিডিকেট-অ্যাকশন জোড়ার (সম্ভবত শূন্য) ক্রমানুসারে (সাব্রোটিনে সর্বাধিক 10 জোড়া), এর সাথে সমাপ্ত হয়'|'
।পূর্বাভাস:
'_'
কোন,'r'
লাল,'g'
সবুজ,'b'
নীলক্রিয়া:
'F'
এগিয়ে'L'
যান, বাম'R'
দিকে ঘুরুন, ডানদিকে ঘুরুন,'r'
লাল রঙ করুন,'g'
সবুজ রঙ করুন,'b'
নীল রঙ করুন,'1'
F1 কল করুন ...,'5'
F5 কল করুন,'_'
কিছুই করবেন না
উপরের মতো আপনাকে নিজের ইনপুটগুলির নাম রাখতে হবে না, তবে তাদের মানগুলি অবশ্যই নির্দিষ্ট হিসাবে সুনির্দিষ্ট হতে হবে।
আউটপুট: 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 চাপুন, জেএস কনসোলে টাইপ করুন:
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()))
এবং আপনার ভাষার জন্য ফলাফল পুনরায় ফর্ম্যাট করুন।
সবচেয়ে কম জয়। কোনও ফাঁক নেই।