Panoramica
Alcuni di voi potrebbero essere a conoscenza della sequenza di Kolakoski ( A000002 ), una sequenza autoreferenziale ben nota che ha le seguenti proprietà:
È una sequenza contenente solo 1 e 2, e per ogni gruppo di 1 e due, se sommi la lunghezza delle corse, è uguale a se stesso, solo la metà della lunghezza. In altre parole, la sequenza di Kolakoski descrive la lunghezza delle corse nella sequenza stessa. È l'unica sequenza che lo fa ad eccezione della stessa sequenza con 1 iniziale cancellato. (Questo è vero solo se ti limiti alle sequenze composte da 1 e 2 secondi - Martin Ender)
La sfida
La sfida è, dato un elenco di numeri interi:
- Output
-1
se l'elenco NON è un prefisso funzionante della sequenza di Kolakoski. - Emette il numero di iterazioni prima che la sequenza diventi
[2]
.
L'esempio elaborato
Usando l'immagine fornita come esempio:
[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.
Pertanto, il numero risultante è 8
per un input di [1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1]
.
9
va bene anche se stai indicizzando 1.
La suite di test (puoi testare anche con iterazioni secondarie)
------------------------------------------+---------
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
Se sei confuso:
Verità: alla fine raggiungerà due senza alcun passaggio intermedio con elementi diversi da 1
e 2
. -Einkorn Enchanter 20 hours ago
Falsy: il valore finale non lo è [2]
. I termini intermedi contengono qualcosa di diverso da qualcosa dell'insieme [1,2]
. Un altro paio di cose, vedi esempi.
Questo è code-golf , il conteggio di byte più basso sarà il vincitore.
[2]
finché non avessi visto il [2,2,1,1,2,1,2]
caso di test.
1
e 2
.
[1]
come caso di prova.
-1
?