Stewies Spiel des Lebens und der Müdigkeit ist dem bekannteren Spiel des Lebens von Conway ziemlich ähnlich .
Das Universum des Stewie-Spiels für Leben und Müdigkeit (GoLF) ist ein unendliches zweidimensionales orthogonales Gitter quadratischer Zellen, von denen sich jede in einem von drei möglichen Zuständen befindet, lebendig, tot oder müde. Jede Zelle interagiert mit ihren acht Nachbarn, dh den Zellen, die horizontal, vertikal oder diagonal benachbart sind. Zu jedem Zeitpunkt treten folgende Übergänge auf:
- Jede lebende Zelle mit weniger als zwei lebenden Nachbarn stirbt, als ob sie durch Unterbevölkerung verursacht würde.
- Jede lebende Zelle mit zwei oder drei lebenden Nachbarn lebt für die nächste Generation weiter.
- Jede lebende Zelle mit mehr als drei lebenden Nachbarn stirbt wie durch Überbevölkerung.
- Jede tote Zelle mit genau drei lebenden Nachbarn wird wie durch Reproduktion zu einer lebenden Zelle.
- Jede Zelle, die seit zwei aufeinanderfolgenden Generationen lebt, stirbt wie durch Müdigkeit. Es kann erst in der nächsten Generation wieder zum Leben erwachen
- Jede Zelle, die sich außerhalb der Grenze des Eingangsgitters befindet, ist tot, als wäre sie von einer Klippe gefallen.
Herausforderung:
Ihre Herausforderung besteht darin, ein Raster mit Dimensionen n-mal-m zu nehmen, das den Anfangszustand eines GoLF und eine ganze Zahl p darstellt , und den Zustand des Spiels nach p Generationen auszugeben .
Regeln:
- Eingabe- und Ausgabeformate sind optional, aber die Eingabe- / Ausgabegitter sollten dieselbe Darstellung haben
- Sie können beliebige druckbare Symbole auswählen, um lebende und tote Zellen darzustellen (ich verwende sie
1
für lebende Zellen und0
für tote Zellen). - Sie können wählen, ob Sie 0 oder 1 indiziert haben. In den Beispielen
p=1
bedeutet der Zustand nach einem Schritt. - Der kürzeste Code in jeder Sprache gewinnt
- Eingebaute Funktionen für die zellulare Automatisierung sind zulässig
Testfälle:
In den Beispielen habe ich nur das Eingaberaster in die Eingabe aufgenommen, nicht p . Ich habe Ausgänge für verschiedene p- Werte bereitgestellt . Sie dürfen nur das Raster ausgeben, das zu einem bestimmten Eingang p gehört .
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
Ja, ich bin mir bewusst, dass alle anfänglichen Samen nicht dazu führen, dass alle Zellen tot sind.
quelle
Antworten:
MATL ,
343025 Bytes5 Bytes entfernt dank eines Vorschlags von @CalculatorFeline !
Probieren Sie es online aus!
Eingaben sind eine Matrix und eine Zahl. Die Matrix wird
;
als Zeilentrennzeichen verwendet. Die Matrizen für die drei Testfälle werden als eingegebenErläuterung
quelle
3Y6
näher erläutern? Wenn das mittlere Element des Kernels war.5
, können Sie CGOL mit just überprüfen2<value<4
. Könnte helfen.5<=value<=7
. Was3Y6
, es ist nur eine vordefinierte wörtliche. Es gibt auch1Y6
, das ist die 4-NachbarschaftAPL (Dyalog Classic 16.0) , 59 Byte
Probieren Sie es online aus! (emuliert auf Classic 15.0)
APL (Dyalog Unicode 16.0) , 85 Byte
Probieren Sie es online aus! (emuliert auf Unicode 15.0)
Fordert zur Eingabe des Rasters und dann zur Eingabe von p auf . Druckt das neue Raster nach p Generationen.
Beachten Sie, dass hierfür das neue
⌺
Grundelement (Schablone) verwendet wird, das nicht im klassischen Zeichensatz enthalten ist, daher eine kürzere Version und eine Version mit weniger Bytes.Erklärung folgt…
quelle
display
Funktion finden Sie hier .Golly RuleLoader, 295 Bytes
Das Eingaberaster sollte eingefügt werden. Die Grenzen befinden sich im Regelnamen (z. B.
5
*3
istY:P5,3
). Drücken Sie die Leertaste, um fortzufahren .quelle
Java 8, 333 Bytes
Erläuterung:
quelle