Python 程序检查机器人能否到达目标位置
假设我们有一个机器人,目前位于 (0, 0) 位置(笛卡尔平面)。如果我们有一系列它可以执行的移动,包含 N(北)、S(南)、W(西)和 E(东)。我们必须检查它是否可以到达目标坐标 (x, y)。
因此,如果输入类似于 moves = ['N','N','E','E','S'], (x,y) = (2,1),则输出为 True。
为了解决这个问题,我们将遵循以下步骤:
- temp_coord := [0,0]
- 对于 moves 中的每个移动,执行以下操作:
- 如果 move 等于 "N",则
- temp_coord[1] := temp_coord[1] + 1
- 否则,如果 move 等于 "S",则
- temp_coord[1] := temp_coord[1] - 1
- 否则,如果 move 等于 "E",则
- temp_coord[0] := temp_coord[0] + 1
- 否则,如果 move 等于 "W",则
- temp_coord[0] := temp_coord[0] - 1
- 如果 move 等于 "N",则
- 如果 temp_coord[0] 等于 coord[0] 且 temp_coord[1] 等于 coord[1],则返回 True,否则返回 false。
让我们看看以下实现以获得更好的理解:
示例
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))
输入
['N','N','E','E','S'], [2,1]
输出
True
广告