Einführung
Die Methode des mittleren Quadrats wird zur Erzeugung von Pseudozufallszahlen verwendet. Dies ist jedoch in der Praxis keine gute Methode, da ihre Dauer in der Regel sehr kurz ist und einige schwerwiegende Schwächen aufweist. Wie funktioniert das? Nehmen wir ein Beispiel:
Für den Samen wählen wir 123456
:
Seed 123456
Das Samenquadrat (Samen × Samen) ist gleich:
Seed² 15241383936
Wir haben mit einer 6-stelligen Zahl begonnen. Das bedeutet, dass das Startquadrat eine 12-stellige Zahl liefern sollte . Ist dies nicht der Fall, werden führende Nullen hinzugefügt, um Folgendes zu kompensieren:
Seed² 015241383936
Wir nehmen dann den mittleren Teil der Zahl mit der gleichen Größe wie der Samen:
Seed² 015241383936
^^^^^^
Das ist dann unser neues Saatgut : 241383
. Wir wiederholen den gleichen Vorgang wie oben gezeigt. Wir bekommen folgendes:
0: 123456
015241383936
| |
1: 241383
058265752689
| |
2: 265752
070624125504
| |
3: 624125
389532015625
| |
4: 532015
283039960225
| |
5: 039960
001596801600
| |
6: 596801
Und das geht noch eine Weile so ... Jetzt wissen wir, was die Mittelquadratmethode ist, und kommen zur Herausforderung:
Die Aufgabe
Jeder Same hat eine Periode . Die Periode eines n- stelligen Keims kann nicht länger als 8 n sein . Zum Beispiel den Samen 82
. Dies würde die folgende Sequenz ergeben:
82 > 72 > 18 > 32 > 02 > 00 > 00 > 00 > 00 > 00
|____|____|____|____|____|____|____|____|____|___...
0 1 2 3 4 5 6 7 8 9
Sie können sehen, dass die Periode gleich 5 ist , bevor Sie wieder dieselbe Ziffer enthalten. Ihre Aufgabe ist es, bei einem Startwert größer als 0, der keine führenden Nullen enthält, die Periode des Startwerts auszugeben . In diesem Fall müssen Sie also ausgeben 5
.
Ein anderes Beispiel ist 24
:, das folgendes ergibt:
24 > 57 > 24
|____|____|___...
0 1 2
Wie Sie sehen, enden nicht alle Sequenzen in 0
. Dieser Zyklus hat eine Periode von 1 .
Testfälle
Input > Output
24 > 1
82 > 5
123456 > 146
8989 > 68
789987 > 226
Die Pastebins mit den Sequenzen für 123456 , 8989 , 789987
Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
Sie können davon ausgehen, dass der Eingang niemals eine ungerade Anzahl von Ziffern hat.
24
ist periodisch (mit Punkt 2, würde ich sagen),82
ist schließlich periodisch (mit Punkt 1).