Jede Zelle in einem lebensechten Zellularautomaten benötigt nur ein Bit, um sie darzustellen, da sie nur lebendig oder tot sein kann. Das heißt, es gibt nur zwei Farben; ziemlich langweilig.
Normale Bilder haben 24 Bit pro Pixel (jeweils 8 in RGB). Dies bedeutet, dass Sie in einem normalen Bild mit Pixeln als Zellen 24 lebensechte Spiele gleichzeitig simulieren können!
Herausforderung
Ihre Aufgabe ist es, ein Programm zu schreiben, das eine Generation der Regeln eines lebensechten Zellularautomaten auf ein 24-Bit-Tiefenbild (in jedem bekannten Format, das Sie mögen) anwendet, und das resultierende Bild auszugeben.
Jede der 24 Ebenen verwendet denselben lebensechten Regelsatz, ausschließlich innerhalb ihrer eigenen Ebene. Die 24 Schichten interagieren nicht miteinander.
Ebenfalls
- Nullen sind tote Zellen und diejenigen sind lebende Zellen.
- Die Randbedingungen sind periodisch (Bildung eines Torus).
- Alle Bildabmessungen sollten funktionieren.
Input-Output
Ihr Programm muss 3 Argumente über die Standardeingabe oder die Befehlszeile (oder die nächste Entsprechung Ihrer Sprache) aufnehmen:
- Der Name der Eingabebilddatei.
- Eine Zeichenfolge mit den Ziffern 0 bis 8 in aufsteigender Reihenfolge, die angibt, wann neue Zellen geboren werden:
- Wenn die Ziffer d in der Zeichenfolge ist dann kommen toten Zellen am Leben , wenn sie d lebende Nachbarn.
- Beispiel:
3
ist normales Leben - Tote Zellen mit genau 3 lebenden Nachbarn werden lebendig.
- Eine Zeichenfolge mit den Ziffern 0 bis 8 in aufsteigender Reihenfolge, die angibt, wann vorhandene Zellen überleben:
- Befindet sich die Ziffer d in der Zeichenkette, überleben lebende Zellen mit d lebenden Nachbarn bis zur nächsten Generation, andernfalls sterben sie.
- Beispiel:
23
ist normal Leben - Nur Zellen mit genau 2 oder 3 Nachbarn überleben die nächste Runde.
Beachten Sie, dass das Viertel Moore immer verwendet wird. Lesen Sie diese oder diese für weitere Informationen darüber , was genau einen getreuen Automaten definiert und viele interessanten rulesets.
Das Ausgabebild der ersten Generation sollte entweder angezeigt oder als out.png
( bmp
oder was auch immer) gespeichert werden .
Einreichung
Der kürzeste Code in Bytes gewinnt.
Sie sind erforderlich , mindestens ein Testbild und seine drei unmittelbaren nachfolgenden Generationen für einige nicht-triviale ruleset aufzunehmen. Verwenden Sie Ihren Avatar und die normalen Lebensregeln, wenn Sie sich nichts Besseres vorstellen können.
Wenn Sie möchten, können Sie diese Gosper Glider Gun verwenden, bei der sich die einzigen lebenden Teile in der grünen 128-Schicht befinden (dies funktioniert nur im normalen Leben):
Das Posten von interessanten Sequenzen oder sogar Animationen ist ausdrücklich erwünscht.
Antworten:
MATLAB: 275
Mein Favorit unter den Parametern, die ich ausprobiert habe, ist
45678
,568
dass nach einer allmählichen Auflösung ein Himmel aus funkelnden Sternen entsteht. Dieses Bild zeigt "die Auflösung der Beständigkeit des Gedächtnisses".Ungolfed GIF-produzierender Code (akzeptiert PNG ohne Erweiterung):
Golfed Code, der einen vollständigen Dateinamen akzeptiert (der aus GIF, JPEG und anderen Elementen bestehen kann) und in
out.png
folgende Felder schreibt :Eine zuvor entdeckte Tatsache ist , dass Parameter
12
,1
kann eine Sierpinski teppichartige Fraktal zu erzeugen , verwendet werden. Hier ist eine mit einem zufällig platzierten Startpunkt in jedem Bit:quelle
Mathematica, 359
Ich nehme Eingaben von Eingabeaufforderungen in der Reihenfolge (1) Geburtsregeln, (2) Überlebensregeln, (3) Dateinamen entgegen und zeige das Ergebnis direkt in Mathematica an.
Dies sollte mit den meisten gängigen Formaten kompatibel sein, sofern die Datei tatsächlich eine Tiefe von 24 Bit hat.
Hier ist eine etwas ungolfed Version:
Hier sind zwei Beispiele mit Rainbolts Avatar:
20 Generationen mit dem Standard Game of Life
[3,23]
:20 Generationen mit
[456,34567]
:Und hier ist ein GIF der ersten 200 Generationen der letzteren Regel. Das GIF überspringt jeden dritten Frame, da ich ihn sonst nicht unter 2 MB komprimieren könnte:
quelle
Python 2, 427
Für diejenigen, die kein Mathematica haben;)
Es fordert zur Eingabe des Dateinamens auf, dann der Geburtsfälle und dann der Überlebensfälle. Also für das normale Leben Regeln , die Sie könnten Eingang
test.bmp
, dann3
, dann23
(ohne Anführungszeichen oder etwas brauchten).Ich habe Zeichenfolgenformatierung verwendet, um die Farbbits zu indizieren und neu zu kombinieren, obwohl ich befürchte, dass dies wahrscheinlich nicht optimal ist.
Beachten Sie, dass es ziemlich langsam ist.
Beispiel
Hoher Lebensstandard und großartiger Kunstmix, oder? (Regel
36
/23
.)Original / Generation 1
Generation 2 / Generation 3
quelle
Java, 1085 Bytes
Beispiele (Regel 368/245):
Gen 0:
Gen 1:
Gen 2:
Gen 3:
Gen 4:
quelle