Schreiben Sie ein Programm oder eine Funktion, die eine ungerade positive Ganzzahl N und eine Folge von Dezimalstellen ( 0123456789
) enthält. Die Zeichenfolge repräsentiert einen eindimensionalen Zellularautomaten mit zehn Zuständen . Jede Ziffer belegt eine Zelle, und die Aktualisierungsregel von einer Generation zur nächsten lautet, dass jede Zelle die Ziffer wird, die sich aus der Summe der N auf der Zelle zentrierten Zellen Modulo 10 ergibt.
Die ersten und letzten Zellen werden wie Nachbarn umgebrochen, sodass auf Zellen immer N Zellen zentriert sein können. Beachten Sie, dass N möglicherweise größer als die Länge der Zeichenfolge ist. Dies bedeutet, dass die Zeichenfolge mehrfach umgebrochen werden kann und einige Ziffern dementsprechend mehrfach in der Summe enthalten sind.
Wenn beispielsweise N 7 ist und die Zeichenfolge 7 ist 038
, können wir zur Visualisierung der zu summierenden Zellen 038
unendlich viele Wiederholungen in beide Richtungen schreiben
...038038038038038...
dann ist die Stelle, in die sich der 0
Wille ändert, die Summe der 7 Stellen, die um ein beliebiges 0
Modulo 10 zentriert sind :
...038038038038038...
^_____^
|
sum all these
Das ist (0+3+8+0+3+8+0)%10
, was ist 2
.
In ähnlicher Weise werden die Ziffern, in die sich 3
und 8
ändern, durch (3+8+0+3+8+0+3)%10
= 5
bzw. (8+0+3+8+0+3+8)%10
= definiert 0
.
Somit wird , nachdem die Erzeugung 038
ist , 250
wenn N 7 ist.
Ihr Programm oder Ihre Funktion muss die Ziffernfolge der nächsten Generation der eingegebenen Ziffernfolge drucken oder zurückgeben. Wenden Sie die Aktualisierungsregel einmal auf jede Zelle an und geben Sie die Ausgabe aus. Der kürzeste Code in Bytes gewinnt.
Testfälle
[digit string] -> [N = 1], [N = 3], [N = 5], [N = 7], [N = 9], [N = 43]
0 -> 0, 0, 0, 0, 0, 0
1 -> 1, 3, 5, 7, 9, 3
2 -> 2, 6, 0, 4, 8, 6
3 -> 3, 9, 5, 1, 7, 9
4 -> 4, 2, 0, 8, 6, 2
5 -> 5, 5, 5, 5, 5, 5
6 -> 6, 8, 0, 2, 4, 8
7 -> 7, 1, 5, 9, 3, 1
8 -> 8, 4, 0, 6, 2, 4
9 -> 9, 7, 5, 3, 1, 7
00 -> 00, 00, 00, 00, 00, 00
07 -> 07, 47, 41, 81, 85, 47
10 -> 10, 12, 32, 34, 54, 12
11 -> 11, 33, 55, 77, 99, 33
12 -> 12, 54, 78, 10, 34, 54
34 -> 34, 10, 78, 54, 12, 10
66 -> 66, 88, 00, 22, 44, 88
80 -> 80, 86, 46, 42, 02, 86
038 -> 038, 111, 294, 250, 333, 472
101 -> 101, 222, 343, 545, 666, 989
987 -> 987, 444, 901, 765, 222, 543
1234 -> 1234, 7698, 3412, 9876, 1234, 7698
26697 -> 26697, 54128, 00000, 56982, 84413, 54128
001002 -> 001002, 211122, 331332, 335334, 455544, 113112
129577020 -> 129577020, 326194923, 474081605, 961120291, 333333333, 183342413
6023845292173530 -> 6023845292173530, 6853571632015189, 1197228291289874, 9238433109901549, 0110956118726779, 1982123699138828