Lebensechte zellulare Automaten sind zellulare Automaten, die Conways Spiel des Lebens insofern ähnlich sind, als sie auf einem (theoretisch) unendlich großen quadratischen Gitter arbeiten, in dem jede Zelle genau 8 Nachbarn hat und einer von 2 Zuständen ist, nämlich lebendig und tot .
Diese Like-like-Versionen unterscheiden sich jedoch in entscheidender Weise: Die Regeln, nach denen eine bestimmte Zelle zum Leben erweckt wird, und die Regeln, nach denen eine bestimmte Zelle bis zur nächsten Generation überlebt.
Zum Beispiel verwendet das klassische Spiel des Lebens die Regel B3/S23
, dh es werden 3 lebendige Zellen benötigt, um eine neue zu gebären, und entweder 2 oder 3 lebende Nachbarn, um zu überleben. Für diese Herausforderung gehen wir davon aus, dass sich die Nachbarn nicht selbst einschließen, sodass jede Zelle genau 8 Nachbarn hat.
Ihre Aufgabe ist es, bei gegebener Startkonfiguration, einer Geburtsregel, einer Überlebensregel und einer positiven Ganzzahl (der Anzahl der auszuführenden Generationen) den lebensechten Automaten zu simulieren, wobei diese Regeln für die Anzahl der Generationen in dem kürzestmöglichen Code verwendet werden . Die Ausgangskonfiguration ist eine quadratische Matrix / ein zweidimensionales Array oder eine mehrzeilige Zeichenfolge, die Sie auswählen können. Die anderen können in jedem vernünftigen Format und Verfahren angegeben werden.
Wenn zum Beispiel die Geburtsregel lautete 12345678
(alle lebenden Nachbarn), lautete die Überlebensregel 2357
und die Ausgangskonfiguration lautete
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
Die nächsten zwei Generationen wären
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
Wenn die Anzahl der angegebenen Generationen 10 wäre, wäre die Ausgabe etwas im Sinne von
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
Sie müssen nicht mit Änderungen umgehen, die außerhalb der durch die Eingabematrix vorgegebenen Grenzen liegen. Alle Zellen außerhalb der Matrix beginnen jedoch tot zu sein. Daher kann die Eingabematrix eine beliebige Größe haben, bis zu dem Maximalwert, den Ihre Sprache unterstützen kann. Sie müssen die Karte nicht zwischen den Generationen ausgeben.
Dies ist ein Code-Golf, also gewinnt der kürzeste Code.
Testfälle
Diese verwenden die B/S
Notation, um die verwendeten Regeln anzugeben
B2/S2
, generations = 100
, Konfiguration:
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
Ausgabe:
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
, Konfiguration:
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
Ausgabe:
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
Wenn Sie mehr Testfälle generieren müssen, können Sie diesen wunderbaren Simulator verwenden. Bitte achten Sie darauf, die Boardgröße zu begrenzen