Di recente ho pubblicato una domanda sui giochi Diffy che è rimasta senza risposta. Va bene, la domanda è davvero difficile, ma vorrei fare una domanda più semplice sui giochi Diffy in modo che possiamo far rotolare la palla.
Come funziona Diffy
Copiato da Trova giochi diffusi
Il gioco Diffy funziona nel modo seguente: Inizi con un elenco di numeri interi non negativi, in questo esempio useremo
3 4 5 8
Quindi prendi la differenza assoluta tra i numeri adiacenti
(8) 3 4 5 8
5 1 1 3
Quindi ripeti. Ripeti finché non ti accorgi di essere entrato in un ciclo. E poi generalmente il gioco ricomincia dall'inizio.
3 4 5 8
5 1 1 3
2 4 0 2
0 2 4 2
2 2 2 2
0 0 0 0
0 0 0 0
La maggior parte dei giochi termina in una serie di zeri, che è considerato uno stato perdente, ma alcuni rari giochi rimangono bloccati in loop più grandi.
Compito
Dato lo stato iniziale di un gioco Diffy, determinare se il gioco alla fine raggiunge uno stato di tutti zeri. Dovresti produrre un valore di Verità o Falsia per ciascuno dei due stati. Che corrisponde a cui non importa.
L'obiettivo è ridurre al minimo il numero di byte nella sorgente.
1 1 0
è periodico, così 42 42 41
è un tale stato.
n
è dispari, il gioco non va a zero a meno che tutti i numeri siano uguali. Se la lunghezza è una potenza di 2, va sempre a zero.
n
elementi e numero massimo m
di n * bit_length(m)
passaggi nella maggior parte dei passaggi. Quindi, n*m
è anche un limite superiore. Un limite superiore più forte è t(n) * bit_length(m)
, dov'è t(n)
il potere maggiore di 2 che è un fattore di n
.