मान लीजिए हमारे पास एक रोबोट है, जो वर्तमान में स्थिति (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) डालें
प्रत्येक k के लिए moves में, करें
यदि 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