Giả sử chúng ta có một rô bốt, hiện đang ngồi ở vị trí (0, 0) (Mặt phẳng Descartes). Nếu chúng ta có danh sách các bước di chuyển mà nó có thể thực hiện, bao gồm N (Bắc), S (Nam), W (Tây) và E (Đông). Chúng tôi phải kiểm tra xem nó có thể đến được ở tọa độ đích (x, y) hay không.
Vì vậy, nếu đầu vào giống như move =['N', 'N', 'E', 'E', 'S'], (x, y) =(2,1), thì đầu ra sẽ là True,
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- temp_coord:=[0,0]
- đối với mỗi bước di chuyển, hãy thực hiện
- nếu chuyển động giống như "N", thì
- temp_coord [1]:=temp_coord [1] + 1
- nếu không, khi di chuyển giống như "S", thì
- temp_coord [1]:=temp_coord [1] - 1
- nếu không khi di chuyển giống như "E", thì
- temp_coord [0]:=temp_coord [0] + 1
- nếu không khi di chuyển giống như "W", thì
- temp_coord [0]:=temp_coord [0] - 1
- nếu chuyển động giống như "N", thì
- trả về True khi temp_coord [0] giống với coord [0] và temp_coord [1] giống ascoord [1] nếu không thì false.
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
class Solution: def solve(self, moves, coord): temp_coord = [0,0] for move in moves: if move == "N": temp_coord[1] += 1 elif move == "S": temp_coord[1] -= 1 elif move == "E": temp_coord[0] += 1 elif move == "W": temp_coord[0] -= 1 return temp_coord[0] == coord[0] and temp_coord[1] == coord[1] ob = Solution() moves = ['N','N','E','E','S'] coord = [2,1] print(ob.solve(moves, coord))
Đầu vào
['N','N','E','E','S'], [2,1]
Đầu ra
True