ধরুন আমাদের একটি রোবট আছে, যেটি বর্তমানে (0, 0) অবস্থানে (কার্টেসিয়ান প্লেন) বসে আছে। যদি আমাদের কাছে এর চালগুলির তালিকা থাকে যা এটি তৈরি করতে পারে, যার মধ্যে রয়েছে N(উত্তর), এস(দক্ষিণ), ডব্লু(পশ্চিম), এবং ই(পূর্ব)। যাইহোক, যদি রোবটটি আগে ছিল এমন একটি জায়গায় পৌঁছায়, তবে এটি একটি নতুন অদর্শিত স্থানে না পৌঁছানো পর্যন্ত একই দিকে চলতে থাকবে। আমাদের চেক করতে হবে যে এটি চলার পরে এটি (x, y) সমন্বয়ে শেষ হবে কি না।
সুতরাং, যদি ইনপুট মত হয়
moves =['N','N','E','N','W','S'], coord =[0, -1], তাহলে আউটপুট হবে True, যেহেতু রোবট দুটি যাবে উপরে, একটি ডানে, একটি আবার উপরে, একটি বাম এবং একটি নীচে, বর্তমান অবস্থানটি পরিদর্শন করা হলে, এটি নীচে চলে যাবে, তারপর সেই স্থানটিও পরিদর্শন করা হবে, আবার নীচে, তাই অবস্থানে থামুন (0, −1)
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
ny :=0, nx :=0
-
l :=একটি নতুন সেট, প্রাথমিকভাবে স্থানাঙ্ক সন্নিবেশ করান (0, 0)
-
প্রতিটি k নড়াচড়ার জন্য, করুন
-
k যদি "N" এর মত হয়, তাহলে
-
যখন (nx, ny) l, do
-
ny :=ny + 1
-
-
-
অন্যথায় যখন k "S" এর মত হয়, তখন
-
যখন (nx, ny) l, do
-
ny :=ny − 1
-
-
-
অন্যথায় যখন k "E" এর মত হয়, তখন
-
যখন (nx, ny) l, do
-
nx :=nx + 1
-
-
-
অন্যথায়,
-
যখন (nx, ny) l, do
-
nx :=nx − 1
-
-
-
l
-এ যোগ করুন(nx, ny)
-
-
যখন coord (nx, ny), অন্যথা মিথ্যা
এর মত হয় তখন true ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, moves, coord): ny = nx = 0 l = {(0, 0)} for k in moves: if k == "N": while (nx, ny) in l: ny += 1 elif k == "S": while (nx, ny) in l: ny -= 1 elif k == "E": while (nx, ny) in l: nx += 1 else: while (nx, ny) in l: nx -= 1 l.add((nx, ny)) return coord[0] == nx and coord[1] == ny ob = Solution() moves = ['N','N','E','N','W','S'] coord = [0,-1] print(ob.solve(moves, coord))
ইনপুট
['N','N','E','N','W','S'], [0,-1]
আউটপুট
True