Żywotny automat komórkowy jest automatem komórkowym podobnym do Conway's Game of Life, ponieważ działa na (teoretycznie) nieskończenie dużej kwadratowej siatce, gdzie każda komórka ma dokładnie 8 sąsiadów i jest jednym z 2 stanów, mianowicie żywym i martwym .
Jednak te podobne do wersji wersje różnią się w kluczowy sposób: zasady, aby dana komórka ożyła i zasady, aby dana komórka przetrwała do następnej generacji.
Na przykład klasyczna gra w życie stosuje regułę B3/S23
, co oznacza, że 3 żywe komórki rodzą nową, a 2 lub 3 żyjących sąsiadów, aby przeżyć. W przypadku tego wyzwania założymy, że sąsiedzi się nie uwzględniają, więc każda komórka ma dokładnie 8 sąsiadów.
Twoim zadaniem jest, biorąc pod uwagę konfigurację początkową, regułę urodzenia, regułę przeżycia i dodatnią liczbę całkowitą (liczbę pokoleń do uruchomienia), przeprowadzić symulację automatu podobnego do Życia, stosując te reguły dla liczby pokoleń podanych w możliwie najkrótszym kodzie . Konfiguracja początkowa będzie macierzą kwadratową / tablicą 2-wymiarową lub łańcuchem wielowierszowym, do wyboru. Pozostałe mogą być podane w dowolnym rozsądnym formacie i metodzie.
Na przykład, jeśli reguła narodzin była 12345678
(dowolni żyjący sąsiedzi), reguła przetrwania była, 2357
a konfiguracja początkowa była
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
będą następne dwa pokolenia
Generation 1: Generation 2:
0 0 0 0 0 1 1 1 1 1
0 1 1 1 0 1 1 0 1 1
0 1 0 1 0 1 0 1 0 1
0 1 1 1 0 1 1 0 1 1
0 0 0 0 0 1 1 1 1 1
Gdyby liczba podanych pokoleń wynosiła 10, wynikiem byłoby coś podobnego do
0 1 1 1 0
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
0 1 1 1 0
Nie musisz obsługiwać zmian, które zachodzą poza granicami podanymi przez macierz wejściową, jednak wszystkie komórki poza macierzą zaczynają działać martwe. Dlatego macierz wejściowa może mieć dowolny rozmiar, do maksymalnej wartości obsługiwanej przez Twój język. Nie musisz generować tablicy między pokoleniami.
To jest golf golfowy, więc wygrywa najkrótszy kod.
Przypadki testowe
Wykorzystują one B/S
zapis do wskazania zastosowanych reguł
B2/S2
, generations = 100
konfiguracja:
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0
Wynik:
0 0 0 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
B1357/S2468
, generations = 12
konfiguracja:
1 0 1 0 1 0
0 1 1 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
1 1 1 1 1 0
0 1 1 0 0 1
Wynik:
0 1 0 0 0 0
0 1 1 1 1 0
0 1 0 1 1 0
1 1 1 0 0 0
0 0 1 1 1 0
0 1 1 0 0 0
Jeśli chcesz wygenerować więcej przypadków testowych, możesz użyć tego wspaniałego symulatora. Pamiętaj, aby ograniczyć rozmiar planszy