Inspirado en Realizamos saltos de torre y relacionados con 2D Maze Minus 1D
Introducción
Su tarea es encontrar la ruta más corta para salir de un laberinto de matrices siguiendo las reglas especificadas.
Desafío
Una matriz 1D a con n elementos puede considerarse como un laberinto compuesto por n puntos, donde el punto con índice k está conectado a los puntos con k + a [ k ] y k - a [ k ] de una sola manera. En otras palabras, puede saltar hacia adelante o hacia atrás exactamente a [ k ] pasos desde el punto con el índice k . Los puntos con un índice fuera de los límites de la matriz se consideran fuera del laberinto.
Para ilustrar esto, considere la siguiente matriz,
[0,8,5,9,4,1,1,1,2,1,2]
Si estamos en el quinto elemento en este momento, dado que el elemento es 4, podemos saltar 4 pasos hacia adelante hasta el noveno elemento, o 4 pasos hacia atrás hasta el primer elemento. Si hacemos lo último, terminamos con el elemento 0, que indica que no son posibles más movimientos. Si hacemos lo primero, dado que el noveno elemento es 2, podemos elegir saltar al elemento 11, que nuevamente es un 2, y luego podemos saltar nuevamente al "elemento 13", que está fuera de los límites del matriz y consideró una salida al laberinto.
Entonces, si comenzamos desde el elemento en el medio, una forma de salir del laberinto es saltar 1 paso hacia atrás, 4 pasos hacia adelante, 2 pasos hacia adelante y nuevamente 2 pasos hacia adelante, que se pueden expresar como la matriz [-1,4,2,2]
. Alternativamente se puede expresar con la matriz [4,8,10,12]
que registra el índice basado en cero de todos los puntos intermedios y finales (1 basado en índices es también fino), o sólo los signos, [-1,1,1,1]
.
Escapar del laberinto desde el extremo de bajo índice también está bien.
Usar la primera notación y comenzar desde el mismo elemento [1,1,1,2,2]
también es una solución, pero no es óptima ya que hay 5 pasos en lugar de 4.
La tarea es encontrar la ruta más corta para salir del laberinto de la matriz y generar la ruta. Si hay más de una ruta óptima, puede generar una o todas ellas. Si no hay una solución, debe generar un valor falso elegido por usted que sea discernible a partir de una ruta válida (no generar ningún resultado también está bien).
Para simplificar, el número de elementos en la matriz siempre es un número impar y siempre comenzamos desde el elemento en el medio.
Casos de prueba
Los casos de prueba ilustran varias formas de salida, pero no está limitado a estas.
Input
Output
[0,8,5,9,4,1,1,1,2,1,2]
[-1,4,2,2]
[2,3,7,1,2,0,2,8,9]
[2,9] (or [2,-5] or [[2,9],[2,-5]])
[0,1,2,2,3,4,4,4,3,2,2,3,0]
[1,-1,1,1]
[0,1,2,2,4,4,6,6,6,6,6,4,2,1,2,2,0]
[]
Especificaciones
Puede escribir una función o un programa completo.
La matriz solo contiene enteros no negativos.
Puede tomar entrada y salida a través de cualquier formulario estándar , pero especifique en su respuesta qué formulario está utilizando.
Este es el código de golf , gana el menor número de bytes.
Como de costumbre, las lagunas predeterminadas se aplican aquí.
[1,1,1,-1]
lugar de [-1,1,1,1]
?
[0,8,5,9,4,1,1,1,2,1,2]
, para salida[[-1,4,2,2]]
)