Desafío
Dado el tamaño de la cuadrícula, las posiciones de los obstáculos, la posición del jugador y la posición del objetivo, su tarea es encontrar un camino para que el jugador llegue al objetivo y evitar los obstáculos al mismo tiempo (si es necesario).
Entrada
- N : tamaño de cuadrícula
N x N
- P : posición del jugador
[playerposx, playerposy]
- T : posición del objetivo
[targetposx, targetposy]
- O : Posiciones de obstáculos
[[x1, y1], [x2, y2],...,[xn, yn]]
Salida
Ruta : Un jugador de ruta puede usar para alcanzar el objetivo.[[x1, y1], [x2, y2],...,[xn, yn]]
Reglas
- El punto
[0,0]
está en la esquina superior izquierda de la cuadrícula. - La posición del jugador siempre estará en el lado izquierdo de la cuadrícula.
- La posición del objetivo siempre estará en el lado derecho de la cuadrícula.
- La cuadrícula siempre tendrá al menos un obstáculo.
- Puede suponer que ningún obstáculo se superpone a la posición del jugador o del objetivo.
- No necesariamente necesita encontrar la ruta mínima.
- El jugador solo puede moverse hacia la izquierda, derecha, arriba y abajo, no en diagonal.
- Puede tomar la entrada de cualquier manera conveniente.
- Puede suponer que siempre existirá un camino para que el jugador llegue al objetivo.
- Obviamente, para cada entrada existen múltiples rutas válidas, elija una.
- Suponga
N > 2
que la cuadrícula será al menos3 x 3
.
Ejemplos
Entrada: 9
, [6, 0]
, [3, 8]
, [[0, 5], [2, 2], [6, 4], [8, 2], [8, 7]]
Posible salida:[[6, 0], [6, 1], [6, 2], [6, 3], [5, 3], [5, 4], [5, 5], [5, 6], [5, 7], [5, 8], [4, 8], [3, 8]]
Entrada: 6
, [1, 0]
, [3, 5]
, [[1, 2], [2, 5], [5, 1]]
Posible salida:[[1, 0], [1, 1], [2, 1], [2, 2], [2, 3], [2, 4], [3, 4], [3, 5]]
Nota
Tenga en cuenta que X
es para filas y Y
para cols. No los confunda con las coordenadas en una imagen.
Editar
Como señaló @digEmAll, debido a las reglas #2
y #3
, playerY = 0
y targetY = N-1
. Entonces, si lo desea, puede tomar solo como entrada playerX
y y targetX
(si eso acorta su código).