Die Herausforderung: Schreiben Sie das kürzeste Programm, das den zellularen Automaten Game of Life von John H. Conway implementiert . [ Link ]
EDIT: Nach ungefähr einer Woche Wettbewerb habe ich einen Sieger ausgewählt: pdehaan , der es geschafft hat, die Matlab-Lösung mit Perl um einen Charakter zu schlagen .
Für diejenigen, die noch nichts von Game of Life gehört haben, nehmen Sie ein Gitter (idealerweise unendlich) aus quadratischen Zellen. Zellen können lebendig (gefüllt) oder tot (leer) sein. Wir bestimmen, welche Zellen im nächsten Schritt der Zeit leben, indem wir die folgenden Regeln anwenden:
- Jede lebende Zelle mit weniger als zwei lebenden Nachbarn stirbt, als ob sie durch eine Unterbevölkerung verursacht würde.
- Jede lebende Zelle mit mehr als drei lebenden Nachbarn stirbt wie durch Überfüllung.
- Jede lebende Zelle mit zwei oder drei lebenden Nachbarn lebt für die nächste Generation weiter.
- Jede tote Zelle mit genau drei lebenden Nachbarn wird wie durch Reproduktion zu einer lebenden Zelle.
Ihr Programm liest eine ASCII-Textdatei mit 40 x 80 Zeichen ein, die als Befehlszeilenargument angegeben ist, sowie die Anzahl der auszuführenden Iterationen (N). Schließlich wird der Status des Systems nach N Iterationen in eine ASCII-Datei out.txt ausgegeben.
Hier ist ein Beispiellauf mit relevanten Dateien:
in.txt:
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
..................................XX............................................
..................................X.............................................
.......................................X........................................
................................XXXXXX.X........................................
................................X...............................................
.................................XX.XX...XX.....................................
..................................X.X....X.X....................................
..................................X.X......X....................................
...................................X.......XX...................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
100 Mal iterieren:
Q:\>life in.txt 100
Resultierende Ausgabe (out.txt)
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
..................................XX............................................
..................................X.X...........................................
....................................X...........................................
................................XXXXX.XX........................................
................................X.....X.........................................
.................................XX.XX...XX.....................................
..................................X.X....X.X....................................
..................................X.X......X....................................
...................................X.......XX...................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
................................................................................
Die Regeln:
- Sie müssen Datei-E / A verwenden, um die Dateien zu lesen / schreiben.
- Sie müssen eine Eingabedatei und die Anzahl der Iterationen als Argumente akzeptieren
- Sie müssen out.txt (angegeben, falls vorhanden) im angegebenen Format generieren
- Sie müssen sich nicht mit den Kanten der Platine befassen (umlaufende, unendliche Gitter usw.).
- EDIT: Sie tun müssen Zeilenumbrüche in der Ausgabedatei haben.
Der Gewinner wird anhand der Anzahl der Charaktere ermittelt.
Viel Glück!