Wyzwanie
Masz napisać kompletny program, który pobiera siedem liczb ze STDIN i drukuje dwuwymiarową historię automatu komórkowego (CA) do STDOUT. To jest kod golfowy.
Formatowanie danych wejściowych Będzie to siedem liczb całkowitych / ciągów oddzielonych przecinkami. Pierwsza liczba to numer reguły zgodnie z kodem Wolfram (standardowa nazwa każdej reguły). Drugi to początkowa konfiguracja początkowa. Trzeci i czwarty opisują jaki wzorzec i ile razy należy go dołączyć po lewej stronie początkowej konfiguracji. jako wyściółka. Piąta i szósta robią to samo dla prawej strony. Ostatnia liczba to liczba pokoleń do uruchomienia symulacji.
Przykładem jest dane wejściowe 90,11,0,4,0,4,5
. To powinno powiedzieć Twojemu programowi, że korzystasz z reguły 90 . Powinien także powiedzieć programowi, że chcesz, aby początkowa konfiguracja była 11
z łańcuchem 0
dołączonym 4 razy na obu końcach, więc rzeczywisty wzorzec początkowy to 0000110000
. Informuje również twój program o uruchomieniu tej symulacji przez 5 pokoleń.
Dane wyjściowe Twój program powinien drukować całą tablicę komórek każdego pokolenia (oddzielonych znakami nowej linii), tak aby dane wyjściowe były schematem czasoprzestrzennym urzędu certyfikacji. Dla każdego pokolenia stan każdej komórki jest określony przez jej stan i stany komórek po lewej i prawej stronie, zgodnie z regułą podaną jako dane wejściowe. Symulacja powinna owijać się wokół krawędzi. Pierwszą drukowaną rzeczą powinna być tablica początkowa jako gen. 0.
Dane wejściowe 90,11,0,4,0,4,5
powinny skutkować następującymi danymi wyjściowymi tak dokładnie, jak to możliwe.
0000110000
0001111000
0011001100
0111111110
1100000011
0110000110
Zauważ, że stan początkowy nie jest uwzględniony w pięciu pokoleniach. Zauważ również, że symulacja owija się wokół krawędzi.
Więcej przykładów
Wejście:
184,1100,01,2,01,1,4
wynik:
0101110001
1011101000
0111010100
0110101010
0101010101
Wejście:
0,1011,1,0,0,1,2
wynik:
10110
00000
00000
Więcej informacji o tym, jak działa 1D CA i jak są one ponumerowane