introduzione
Il metodo del quadrato centrale viene utilizzato per la generazione di numeri pseudocasuali. Tuttavia, questo non è un buon metodo in pratica, poiché il suo periodo è generalmente molto breve e presenta alcuni gravi punti deboli. Come funziona? Facciamo un esempio:
Per il seme, scegliamo 123456:
Seed 123456
Il seme al quadrato (seme × seme) è uguale a:
Seed² 15241383936
Abbiamo iniziato con un numero di 6 cifre . Ciò significa che il seme al quadrato dovrebbe fornire un numero di 12 cifre . In caso contrario, vengono aggiunti zero iniziali per compensare:
Seed² 015241383936
Prendiamo quindi la parte centrale del numero, con le stesse dimensioni del seme:
Seed² 015241383936
^^^^^^
Questo è allora il nostro nuovo seme : 241383. Ripetiamo lo stesso processo come mostrato sopra. Otteniamo quanto segue:
0: 123456
015241383936
| |
1: 241383
058265752689
| |
2: 265752
070624125504
| |
3: 624125
389532015625
| |
4: 532015
283039960225
| |
5: 039960
001596801600
| |
6: 596801
E questo continuerà tra un po '... Ora sappiamo qual è il metodo del quadrato centrale, arriviamo alla sfida:
L'obiettivo
Ogni seme ha un periodo . Il periodo di un seme n -digit non può essere più lungo di 8 n . Ad esempio, il seme 82. Ciò darebbe la seguente sequenza:
82 > 72 > 18 > 32 > 02 > 00 > 00 > 00 > 00 > 00
|____|____|____|____|____|____|____|____|____|___...
0 1 2 3 4 5 6 7 8 9
Puoi vedere che il periodo è uguale a 5 , prima di contenere nuovamente la stessa cifra. Il tuo compito è quando viene dato un seme maggiore di 0 che non contiene zero iniziali, emette il periodo del seme . Quindi, in questo caso, è necessario eseguire l'output 5.
Un altro esempio è: 24 :, che fornisce quanto segue:
24 > 57 > 24
|____|____|___...
0 1 2
Come puoi vedere, non tutte le sequenze finiscono 0. Questo ciclo ha un periodo di 1 .
Casi test
Input > Output
24 > 1
82 > 5
123456 > 146
8989 > 68
789987 > 226
I pastebins con le sequenze per 123456 , 8989 , 789987
Questo è code-golf , quindi vince l'invio con il minor numero di byte!
Si può presumere che l'input non avrà mai un numero irregolare di cifre.
24è periodico (con il periodo 2, direi),82è infine periodico (con il periodo 1).