Visión general
Algunos de ustedes podrían estar al tanto de la secuencia de Kolakoski ( A000002 ), una secuencia autorreferencial bien conocida que tiene la siguiente propiedad:
Es una secuencia que contiene solo 1 y 2, y para cada grupo de 1 y dos, si suma la longitud de las carreras, es igual a sí misma, solo la mitad de la longitud. En otras palabras, la secuencia de Kolakoski describe la longitud de las corridas en la secuencia misma. Es la única secuencia que hace esto, excepto la misma secuencia con el 1 inicial eliminado. (Esto solo es cierto si te limitas a secuencias compuestas de 1s y 2s - Martin Ender)
El reto
El desafío es, dada una lista de enteros:
- Salida
-1si la lista NO es un prefijo de trabajo de la secuencia de Kolakoski. - Salida el número de iteraciones antes de la secuencia se vuelve
[2].
El ejemplo resuelto
Usando la imagen proporcionada como ejemplo:
[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1] # Iteration 0 (the input).
[1,2,2,1,1,2,1,2,2,1,2] # Iteration 1.
[1,2,2,1,1,2,1,1] # Iteration 2.
[1,2,2,1,2] # Iteration 3.
[1,2,1,1] # Iteration 4.
[1,1,2] # Iteration 5.
[2,1] # Iteration 6.
[1,1] # Iteration 7.
[2] # Iteration 8.
Por lo tanto, el número resultante es 8para una entrada de [1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1].
9 también está bien si está indexando 1.
The Test Suite (también puedes probar con sub iteraciones)
------------------------------------------+---------
Truthy Scenarios | Output
------------------------------------------+---------
[1,1] | 1 or 2
[1,2,2,1,1,2,1,2,2,1] | 6 or 7
[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1] | 8 or 9
[1,2] | 2 or 3
------------------------------------------+---------
Falsy Scenarios | Output
------------------------------------------+---------
[4,2,-2,1,0,3928,102904] | -1 or a unique falsy output.
[1,1,1] | -1
[2,2,1,1,2,1,2] (Results in [2,3] @ i3) | -1 (Trickiest example)
[] | -1
[1] | -1
Si estás confundido:
Verdad: Eventualmente llegará a dos sin ningún paso intermedio que tenga elementos que no sean 1y 2. -Einkorn Enchanter 20 hours ago
Falsy: el valor final no lo es [2]. Los términos intermedios contienen algo más que algo del conjunto [1,2]. Un par de otras cosas, ver ejemplos.
Este es el código de golf , el conteo de bytes más bajo será el vencedor.
[2]hasta que vi el [2,2,1,1,2,1,2]caso de prueba.
1y 2.
[1]como un caso de prueba.

-1?