Gra życia i zmęczenia Stewiego jest bardzo podobna do bardziej znanej gry życia Conwaya .
Wszechświat Stewie's Game of Life and Fatigue (GoLF) to nieskończona dwuwymiarowa ortogonalna siatka kwadratowych komórek, z których każda jest w jednym z trzech możliwych stanów: żywym, martwym lub zmęczonym. Każda komórka wchodzi w interakcje z ośmioma sąsiadami, które są komórkami sąsiadującymi poziomo, pionowo lub po przekątnej. Na każdym etapie występują następujące przejścia:
- Każda żywa komórka z mniej niż dwoma żywymi sąsiadami umiera, jakby była spowodowana niedostateczną liczbą ludności.
- Każda żywa komórka z dwoma lub trzema żyjącymi sąsiadami żyje w następnym pokoleniu.
- Każda żywa komórka z więcej niż trzema żywymi sąsiadami umiera, jakby przeludnienie.
- Każda martwa komórka z dokładnie trzema żywymi sąsiadami staje się żywą komórką, jakby przez rozmnażanie.
- Każda komórka, która żyje przez dwa kolejne pokolenia, umiera, jakby ze zmęczenia. Nie może obudzić się do następnego życia
- Każda komórka znajdująca się poza granicą siatki wejściowej jest martwa, jakby spadła z klifu.
Wyzwanie:
Twoim zadaniem jest wziąć siatkę wymiarów n-by-m reprezentującą początkowy stan GoLF i liczbę całkowitą p , i wyprowadzić stan gry po p pokoleniach.
Zasady:
- Formaty wejściowe i wyjściowe są opcjonalne, ale siatki wejściowe / wyjściowe powinny mieć taką samą reprezentację
- Możesz wybrać dowolne symbole do wydrukowania reprezentujące żywe i martwe komórki (użyję
1
dla żywych komórek i0
martwych komórek). - Możesz wybrać, czy masz 0 lub 1 indeksowany. W przykładach
p=1
oznacza stan po jednym kroku. - Wygrywa najkrótszy kod w każdym języku
- Wbudowane funkcje automatyzacji komórkowej są dozwolone
Przypadki testowe:
W przykładach dołączyłem tylko siatkę wejściową, a nie p . Podałem dane wyjściowe dla różnych wartości p . Wyprowadzasz tylko siatkę, która idzie z danym wejściem p .
Input:
0 0 0 0 0
0 0 1 0 0
0 0 1 0 0
0 0 1 0 0
0 0 0 0 0
--- Output ---
p = 1
0 0 0 0 0
0 0 0 0 0
0 1 1 1 0
0 0 0 0 0
0 0 0 0 0
p = 2
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
p = 3 -> All dead
---
Input:
0 1 0 0 0 0
0 0 1 0 0 0
1 1 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
--- Output ---
p = 1
0 0 0 0 0 0
1 0 1 0 0 0
0 1 1 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
p = 2
0 0 0 0 0 0
0 0 0 0 0 0
1 0 0 0 0 0
0 1 1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
p = 3
0 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 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
p = 4 -> All dead
Input
0 1 1 0 1 1 0
1 1 0 1 1 1 1
0 1 0 0 0 1 0
0 0 0 1 1 0 1
1 0 0 1 0 1 1
0 0 1 1 0 1 1
1 1 0 0 0 0 1
--- Output ---
p = 1
1 1 1 0 0 0 1
1 0 0 1 0 0 1
1 1 0 0 0 0 0
0 0 1 1 0 0 1
0 0 0 0 0 0 0
1 0 1 1 0 0 0
0 1 1 0 0 1 1
p = 2
1 0 0 0 0 0 0
0 0 0 0 0 0 0
1 0 0 1 0 0 0
0 1 1 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 0 1 1 0 0 0
p = 3
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 1 0 0 0 0
1 1 0 0 0 0 0
0 1 1 0 0 0 0
0 0 1 0 0 0 0
0 0 0 0 0 0 0
p = 4
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 1 1 0 0 0 0
1 0 0 0 0 0 0
1 0 1 0 0 0 0
0 1 1 0 0 0 0
0 0 0 0 0 0 0
p = 5
0 0 0 0 0 0 0
0 1 0 0 0 0 0
1 0 0 0 0 0 0
0 0 1 0 0 0 0
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 0 0 0 0 0
p = 6
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 0 0 0
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
p = 7
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
1 1 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
p = 8
0 0 0 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
0 1 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
p = 9 -> All dead
Tak, wiem, że wszystkie początkowe nasiona nie kończą się martwymi komórkami.
źródło
Odpowiedzi:
MATL ,
343025 bajtówUsunięto 5 bajtów dzięki sugestii @CalculatorFeline !
Wypróbuj online!
Dane wejściowe to macierz i liczba. Macierz używa
;
jako separatora wierszy. Macierze dla trzech przypadków testowych są wprowadzane jakoWyjaśnienie
źródło
3Y6
bardziej szczegółowo? Ponadto, jeśli środkowym elementem jądra było.5
, możesz sprawdzić CGOL za pomocą just2<value<4
. Może pomóc.5<=value<=7
. Jeśli chodzi o3Y6
to, to po prostu predefiniowany dosłowność. Jest też1Y6
4 dzielnicaAPL (Dyalog Classic 16.0) , 59 bajtów
Wypróbuj online! (emulowany na Classic 15.0)
APL (Dyalog Unicode 16.0) , 85 bajtów
Wypróbuj online! (emulowany w Unicode 15.0)
Monity o siatkę, a następnie o p . Drukuje nową siatkę po generacjach p .
Zauważ, że wykorzystuje to nowy
⌺
prymityw (szablon), który nie jest zawarty w klasycznym zestawie znaków, stąd krótsza wersja i mniej bajtowa wersja.Wyjaśnienie do naśladowania…
źródło
display
funkcji znajduje się tutaj .Golly RuleLoader, 295 bajtów
Siatkę wejściową należy wkleić, granice są w nazwie reguły (np.
5
*3
JestY:P5,3
), naciśnij spację, aby przejść dalej.źródło
Java 8, 333 bajty
Wyjaśnienie:
źródło