मान लीजिए हमारे पास एक रोबोट है, जो वर्तमान में (0, 0) (कार्तीय तल) पर बैठा है। यदि हमारे पास एन (उत्तर), एस (दक्षिण), डब्ल्यू (पश्चिम), और ई (पूर्व) युक्त इसकी चाल की सूची है। हालाँकि, यदि रोबोट किसी ऐसे स्थान पर पहुँचता है जहाँ वह पहले रहा है, तो वह उसी दिशा में आगे बढ़ता रहेगा जब तक कि वह एक नए अज्ञात स्थान पर नहीं पहुँच जाता। हमें यह जांचना होगा कि इसके चलने के बाद यह (x, y) निर्देशांक पर समाप्त होगा या नहीं।
तो, अगर इनपुट पसंद है
चालें =['एन', 'एन', 'ई', 'एन', 'डब्ल्यू', 'एस'], समन्वय =[0, -1], तो आउटपुट सही होगा, क्योंकि रोबोट दो जाएगा ऊपर, एक दाएँ, एक बार फिर, एक बाएँ और एक नीचे, जैसा कि वर्तमान स्थिति का दौरा किया जाता है, यह नीचे जाएगा, फिर उस स्थान का भी दौरा किया जाता है, फिर से नीचे, इसलिए स्थिति पर रुकें (0, -1)
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
एनवाई:=0, एनएक्स:=0
-
l :=एक नया सेट, प्रारंभ में निर्देशांक डालें (0, 0)
-
चाल में प्रत्येक k के लिए, करें
-
यदि k "N" के समान है, तो
-
जबकि (एनएक्स, एनवाई) एल में, करो
-
एनवाई:=एनवाई + 1
-
-
-
अन्यथा जब k, "S" के समान हो, तब
-
जबकि (एनएक्स, एनवाई) एल में, करो
-
ny :=ny - 1
-
-
-
अन्यथा जब k, "E" के समान हो, तब
-
जबकि (एनएक्स, एनवाई) एल में, करो
-
एनएक्स:=एनएक्स + 1
-
-
-
अन्यथा,
-
जबकि (एनएक्स, एनवाई) एल में, करो
-
एनएक्स:=एनएक्स - 1
-
-
-
जोड़ें (एनएक्स, एनवाई) एल में
-
-
जब समन्वय (एनएक्स, एनवाई) के समान होता है, अन्यथा झूठा
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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