Tarea
Dado un conjunto de enteros no negativos a , determine el número mínimo de saltos hacia la derecha necesarios para saltar "fuera" de la matriz, comenzando en la posición 0, o devolver cero / nulo si no es posible hacerlo.
Un salto desde el índice ise define como un aumento en el índice de matriz como máximoa[i] .
A fuera de salto es un salto donde el índice resultante de la salto iestá fuera de los límites para la matriz, por lo que para la indexación 1 basada en i>length(a), y para la indexación 0 a base de, i>=length(a).
Ejemplo 1
Considera Array = [4,0,2,0,2,0]:
Array[0] = 4 -> You can jump 4 field
Array[1] = 0 -> You can jump 0 field
Array[2] = 2 -> You can jump 2 field
Array[3] = 0 -> You can jump 0 field
Array[4] = 2 -> You can jump 2 field
Array[5] = 0 -> You can jump 0 field
El camino más corto al "saltar" para salir de los límites tiene longitud 2:
Podríamos saltar de lo 0->2->4->outsideque tiene longitud 3pero 0->4->outsidetiene longitud, 2así que volvemos 2.
Ejemplo 2
Supongamos Array=[0,1,2,3,2,1]:
Array[0] = 0 -> You can jump 0 fields
Array[1] = 1 -> You can jump 1 field
Array[2] = 2 -> You can jump 2 field
Array[3] = 3 -> You can jump 3 field
Array[4] = 2 -> You can jump 2 field
Array[5] = 1 -> You can jump 1 field
En este caso, es imposible saltar fuera de la matriz, por lo que deberíamos devolver un valor cero / nulo o cualquier valor no determinista como ∞.
Ejemplo 3
Supongamos Array=[4]:
Array[0] = 4 -> You can jump 4 field
Podemos saltar directamente desde el índice 0 fuera de la matriz, con solo un salto, por lo que volvemos 1 .
Editar:
Debido a múltiples preguntas sobre el valor de retorno: la devolución ∞es totalmente válida, si no hay posibilidad de escapar. Porque, si hay una posibilidad, podemos definir ese número.
Este es el código de golf , por lo que gana el código más corto en bytes.

[2, 3, 1, 1].Respuestas:
Casco , 9 bytes
Devuelve
Infcuando no existe una solución. Pruébalo en línea!Explicación
Los valores de retorno predeterminados de Husk son útiles aquí.
Si la lista de entrada está vacía,
Γno puede deconstruirla, por lo que devuelve el valor entero predeterminado, 0. Si el primer elemento es 0, entonces el resultado deMo₀↓ŀes una lista vacía, en la que▼devuelve infinito.fuente
Haskell ,
7058 bytesPruébalo en línea!
EDITAR: -12 bytes gracias a @Esolanging Fruit y al OP por decidir permitir el infinito.
Regresa
Infinitycuando no hay solución, lo que hace que la solución sea mucho más simple. Como solo podemos avanzar,fsolo mira el encabezado de la lista y cae1<=k<=xelementos de la lista y vuelve a aparecer. Luego simplemente agregamos 1 a cada solución que se encuentran las llamadas recursivas y tomamos el mínimo. Si la cabeza es 0, el resultado será infinito (ya que no podemos movernos, no hay solución). Dado que1+Infinity==Infinityeste resultado será llevado de vuelta a las personas que llaman. Si la lista está vacía, eso significa que hemos abandonado la matriz, por lo que devolvemos un costo de 0.fuente
Infinitycomo valor nulo (que el OP aún no ha aclarado).Python 2 , 124 bytes
Pruébalo en línea!
-11 bytes gracias al Sr. Xcoder
-12 bytes gracias al Sr. Xcoder y Rod
fuente
print(f([4,1,0,4,1,1,1]))Volverá3, pero debe ser2igual[0] -> [3] -> outside-~truco, se olvidó de eso.APL (Dyalog Classic)ngn / apl , 18 bytesEDITAR: cambié a mi propia implementación de APL porque Dyalog no admite infinitos y el autor del desafío no permite que los números finitos actúen como "nulos"
Pruébalo en línea!pruébalo en la página de demostración de ngn / apldevuelve sin solución
⌊/⍬∞fuente
??2 3 1 1debe asignarse a20Nque es nulo entero de k; si te interesa, puedo explicarte más en la sala deHaskell , 45 bytes
Pruébalo en línea!
Salidas
Infinitycuando es imposible. El argumento auxiliar izquierdo para%rastrear cuántos espacios más podemos mover en nuestro salto actual.fuente
Perl 5 ,
5653 bytesIncluye
+1paraaSolo el código:
Pruébalo en línea!
fuente
Perl 5 , 80 bytes
Pruébalo en línea!
fuente
Jalea , 32 bytes
Pruébalo en línea!
Esto es demasiado largo ...
fuente
Jalea ,
1918 bytesPruébalo en línea!
Explicación
fuente
JavaScript ES6 , 118 bytes
Pruébalo en línea!
Realiza una primera búsqueda amplia de la matriz para encontrar la ruta más corta.
fuente
C (gcc) , 80 bytes
Pruébalo en línea!
fuente
Julia 0.6 , 79 bytes
Devuelve el número de saltos o
Infsi no puedes escapar. Mire recursivamente el primer elemento y regreseInfo1dependiendo de si puede escapar, de lo contrario, agregue1a la solución más corta para matrices truncadas que representan cada salto válido. El flujo de control se realiza con dos declaraciones ternarias comotest1 ? ontrue1 : test2 ? ontrue2 : onfalse2.Pruébalo en línea!
fuente
C # (.NET Core) , 97 bytes
Pruébalo en línea!
Devuelve 0 si no se encontró ninguna ruta.
Explicación
fuente
Pitón 2 ,
837372 bytes-10 gracias a @ user202729
-1 gracias a @JonathanFrech
Pruébalo en línea! Devuelve infinito para un valor nulo.
fuente
and min(...)+1forpuede serand-~min(...)for.