Wprowadzenie
Środkowy kwadrat metoda służy do generowania liczb pseudolosowych o. Nie jest to jednak dobra metoda w praktyce, ponieważ okres ten jest zwykle bardzo krótki i ma poważne słabości. Jak to działa? Weźmy przykład:
Jako nasiona wybieramy 123456
:
Seed 123456
Kwadrat nasion (ziarno × ziarno) jest równy:
Seed² 15241383936
Zaczęliśmy od 6-cyfrowego numeru. Oznacza to, że ziarno do kwadratu powinno dostarczyć 12-cyfrową liczbę. Jeśli tak nie jest, dodawane są zera wiodące w celu skompensowania:
Seed² 015241383936
Następnie bierzemy środkową część liczby o tym samym rozmiarze co ziarno:
Seed² 015241383936
^^^^^^
Jest to nasz nowy materiał siewny : 241383
. Powtarzamy ten sam proces, jak pokazano powyżej. Otrzymujemy następujące:
0: 123456
015241383936
| |
1: 241383
058265752689
| |
2: 265752
070624125504
| |
3: 624125
389532015625
| |
4: 532015
283039960225
| |
5: 039960
001596801600
| |
6: 596801
I to trwa przez jakiś czas ... Teraz wiemy, co to jest metoda średniego kwadratu, przejdźmy do wyzwania:
Zadanie
Każde ziarno ma się okres . Okres nasion n- cyfrowych nie może być dłuższy niż 8 n . Na przykład ziarno 82
. To dałoby następującą sekwencję:
82 > 72 > 18 > 32 > 02 > 00 > 00 > 00 > 00 > 00
|____|____|____|____|____|____|____|____|____|___...
0 1 2 3 4 5 6 7 8 9
Widać, że okres jest równy 5 , zanim ponownie zawiera tę samą cyfrę. Twoim zadaniem jest, jeśli otrzyma ziarno większe niż 0, nie zawierające zer wiodących, wypisz okres nasion . W takim przypadku musisz wygenerować dane wyjściowe 5
.
Innym przykładem jest 24
:, który daje:
24 > 57 > 24
|____|____|___...
0 1 2
Jak widać, nie wszystkie sekwencje kończą się na 0
. Ten cykl ma okres 1 .
Przypadki testowe
Input > Output
24 > 1
82 > 5
123456 > 146
8989 > 68
789987 > 226
Pastebiny z sekwencjami dla 123456 , 8989 , 789987
To jest golf golfowy , więc wygrywanie z najmniejszą ilością bajtów wygrywa!
Możesz założyć, że dane wejściowe nigdy nie będą miały nieparzystej liczby cyfr.
24
jest okresowy (z okresem 2, powiedziałbym),82
jest w końcu okresowy (z okresem 1).