挑战
在给定网格大小,障碍物位置,玩家位置和目标位置的情况下,您的任务是为玩家找到一条到达目标并同时避开障碍物的路径(如有必要)。
输入值
- N:网格大小
N x N
- P:球员位置
[playerposx, playerposy]
- T:目标位置
[targetposx, targetposy]
- O:障碍物位置
[[x1, y1], [x2, y2],...,[xn, yn]]
输出量
路径:玩家可以用来达到目标的路径[[x1, y1], [x2, y2],...,[xn, yn]]
规则
- 该点
[0,0]
位于网格的左上角。 - 玩家的位置将始终位于网格的左侧。
- 目标的位置将始终在网格的右侧。
- 网格将始终至少具有一个障碍。
- 您可以假设没有障碍重叠在玩家或目标位置上。
- 您不一定需要找到最小路径。
- 玩家只能左右移动,不能左右移动。
- 您可以通过任何方便的方式进行输入。
- 您可以假设玩家始终可以到达目标的路径。
- 显然,对于每个输入,存在多个有效路径,请选择一个。
- 假设
N > 2
网格至少为3 x 3
。
例子
输入:9
,[6, 0]
,[3, 8]
,[[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
可能的输出:[[6, 0], [6, 1], [6, 2], [6, 3], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [4, 8], [3, 8]]
输入:6
,[1, 0]
,[3, 5]
,[[1, 2], [2, 5], [5, 1]]
可能的输出:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
注意
请注意,这X
是针对行和列的Y
。不要将它们与图像中的坐标混淆。
编辑
正如@digEmAll指出的,由于规则#2
和#3
,playerY = 0
以及targetY = N-1
。因此,如果需要,您只能将playerX
and和作为输入targetX
(如果这样会使您的代码更短)。