Reguła 110 jest automatem komórkowym o kilku interesujących właściwościach. Twoim celem jest zasymulowanie reguły 110 przy użyciu jak najmniejszej liczby znaków.
Dla tych, którzy nie wiedzą, reguła 110 jest symulowana linia po linii w siatce. Każdy kwadrat w linii siatki patrzy na kwadraty powyżej, powyżej po lewej i powyżej po prawej stronie, aby określić, jaka komórka powinna być.
current pattern 111 110 101 100 011 010 001 000
new cell 0 1 1 0 1 1 1 0
Dane wejściowe: liczby od 0 do 39 reprezentujące n-ty kwadrat w górnym wierszu, w dowolnym rozsądnym formacie (ciąg oddzielony przecinkami, lista, argumenty funkcji). Aby uwzględnić języki z jednym indeksem, liczby mogą być również indeksowane z 1 indeksem, a więc mogą zawierać się w przedziale od 1 do 40.
Przykładowe dane wejściowe:
38,39
Wyjście: siatka 40 x 40 reprezentująca działające automaty, w tym pierwszy rząd. Powinieneś zostawić 0 jako pustą i 1 jak każdy widoczny znak drukowania. Dopuszczalne są spacje końcowe, o ile można właściwie rozróżnić rzeczywistą siatkę. Dół siatki może mieć nową linię, ale między liniami siatki nie powinny być puste linie.
Przykładowe dane wyjściowe:
XX
XXX
XX X
XXXXX
XX X
XXX XX
XX X XXX
XXXXXXX X
XX XXX
XXX XX X
XX X XXXXX
XXXXX XX X
XX X XXX XX
XXX XXXX X XXX
itp.
Uwaga: Podobne pytanie dotyczące automatów komórkowych 1D zostało już zadane, ale mam nadzieję, że przy użyciu tylko jednej reguły można napisać krótsze odpowiedzi.