মান ল করুন একটি রোবট যা বর্তমানে (0, 0) পজিশনে আছে (কার্তেসিয়ান প্লেন)। যদি এর মুভসের তালিকা থাকে যাতে N(উত্তর), S(দক্ষিণ), W(পশ্চিম), E(পূর্ব) থাকে। তবে যদি রোবট এমন কোনো স্পটে পৌঁছায় যেখানে এটি আগে ছিল, তবে এটি একই ডিরেকশনে চলতে থাকবে যতক্ষণ না একটি নতুন অনভিজিটেড স্পটে পৌঁছায়। আমাদের যাচাই করতে হবে এর সব মুভ শেষে এটি (x, y) কোঅর্ডিনেটে পৌঁছেছে কিনা।
যদি ইনপুট হয়:

moves = ['N','N','E','N','W','S'], coord = [0, -1], তবে আউটপুট হবে True, কারণ রোবট দুবার উপরে যাবে, একবার ডানে, আবার একবার উপরে, একবার বামে এবং একবার নিচে, বর্তমান পজিশন ভিজিটেড থাকায় আবার নিচে যাবে, সেটাও ভিজিটেড, আবার নিচে যাবে, সুতরাং (0, -1)-এ থামবে।
এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:
ny := 0, nx := 0
l := একটি নতুন সেট, শুরুতে (0, 0) কোঅর্ডিনেট যোগ করুন।
moves-এ থাকা প্রতিটি k-এর জন্য:
যদি k == "N" হয়, তবে:
যখন (nx, ny) l-এ থাকে, ny := ny + 1
অন্যথায় যদি k == "S" হয়, তবে:
যখন (nx, ny) l-এ থাকে, ny := ny - 1
অন্যথায় যদি k == "E" হয়, তবে:
যখন (nx, ny) l-এ থাকে, nx := nx + 1
অন্যথায়:
যখন (nx, ny) l-এ থাকে, nx := nx - 1
(nx, ny) কে l-এ যোগ করুন।
coord == (nx, ny) হলে true, অন্যথায় false ফেরত দিন।
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:
উদাহরণ
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