Sie kennen wahrscheinlich Conways Spiel des Lebens , den berühmten Zellularautomaten, den der Mathematiker John Conway erfunden hat. Das Leben besteht aus einer Reihe von Regeln, mit denen Sie zusammen eine zweidimensionale Zelle simulieren können. Die Regeln entscheiden, welche Zellen auf dem Brett leben und welche sterben. Mit einigem Einfallsreichtum könnte man sagen, dass Life ein Null-Spieler-Spiel ist: ein Spiel mit dem Ziel, Muster mit interessantem Verhalten zu finden, wie der berühmte Segelflugzeug.
Ein Zero-Player-Spiel ... Bis heute. Sie müssen ein Programm schreiben, das das Spiel des Lebens spielt - und es spielt, um zu gewinnen, im King of the Hill-Stil. Ihr Gegner (Singular) versucht natürlich dasselbe. Der Gewinner ist entweder der letzte Bot mit lebenden Zellen oder der Spieler mit den meisten lebenden Zellen nach 10000 Generationen.
Spielregeln
Die Regeln sind fast die gleichen wie normal (B3 / S23)
- Eine lebende Zelle mit weniger als zwei freundlichen Nachbarn stirbt an Hunger.
- Eine lebende Zelle mit zwei oder drei freundlichen Nachbarn überlebt.
- Eine lebende Zelle mit mehr als drei befreundeten Nachbarn stirbt an Überbevölkerung.
- Eine tote Zelle mit genau drei Nachbarn desselben Spielers wird lebendig, um für diesen Spieler zu kämpfen, vorausgesetzt, es gibt keine feindlichen Nachbarn .
... aber nach jeder Generation haben Sie und Ihr Gegner die Möglichkeit, einzugreifen. Sie können bis zu 30 Zellen aufwecken, um für Sie zu kämpfen. (Wer zuerst geht, entscheidet der Server.)
Die Tafel ist ein (x, y) Zellenquadrat. Alle Felder sind anfangs tot. Die Grenzen wickeln sich nicht um (dies ist keine torusförmige Welt) und sind dauerhaft tot.
Dies ist ein Wettbewerb im Geiste von Battlebots und Core Wars . Es gibt einen zentralen Server, auf dem Bots ausgeführt werden. Diesen finden Sie hier
Protokoll
Der Arena-Server spricht ein einfaches JSON-Protokoll, das über argv kommuniziert wird
Wobei Werte eine JSON-codierte Zeichenfolge ist
y_size
: Die maximale y-Koordinate der Kacheln, bevor sie verschwindenx_size
: die maximalen x Kacheln, bevor sie verschwindentick_id
: die aktuelle Ticknummerboard
: ein Wörterbuch mit Schlüsseln in der Form '(y, x)' und Werten in der Formbot_id
(int)bot_id
: Fliesen in der Tafel mit dieser ID gehören dir
Beispiel:
{"y_size":2000,"x_size":2000,"board":{},"bot_id":1,"tick_id":1}
Teilen Sie dem Server Ihre Wahl mit:
- Schicken Sie dem Server eine Liste mit Kacheln, um Ihre Farbe zu ändern.
- Nur die leeren werden geändert
- Listenformat für verschachtelte Koordinaten
[[0,0], [0,1], [100,22]...]
HINWEIS: Ihr Bot muss die Kacheln überhaupt nicht aktualisieren - der Server führt die Aktualisierung selbst durch
Wettbewerbsregeln
- Wenn Ihre Implementierung das Protokoll nicht befolgt, verfällt der Spielzug. Der Server nimmt keine Statusänderung an
- Sie dürfen einen Fehler im Arenaserver nicht vorsätzlich ausnutzen.
- Lassen Sie Ihre KI in einer vernünftigen Zeit über Züge entscheiden. Bitte senden Sie Ihren nächsten Schritt so schnell wie möglich.
- Zum Schluss sei bitte nett zum Server. Es ist für Ihren Genuss da.
- Die Nichtbeachtung dieser Regeln kann zur Disqualifikation führen.
- Im Falle eines Unentschieden haben beide Spieler 1 Gewinn zu ihrer Gesamtsumme hinzugefügt
Führen Sie den Controller selbst aus
Die Quelle für den Controller finden Sie hier . Es gibt zwei Möglichkeiten, den Controller auszuführen:
- Wettbewerbsmodus (Terminal)
- Eingerichtet mit
python3 get_answers.py
- Führen Sie einen Alles-gegen-Alles-Wettbewerb durch, bei dem jeder Bot gegeneinander antritt.
- Eingerichtet mit
- Testmodus (GUI)
- Lauf
python3 nice_gui.py
- Klicken
Pull Answers
- Wenn Sie vor dem Posten eine eigene Antwort hinzufügen möchten, klicken Sie auf,
File -> Add manual answer
suchen Sie die Datei und wählen Sie die Sprache aus, in der sie geschrieben ist. - Wenn Ihre Sprache nicht vorhanden ist, rufen Sie mich an und ich werde versuchen, sie auf dem Server zu installieren. Ich werde sie ausführen (Installations- und Ausführungsanweisungen wären auch nett!)
- Wähle 2 Bots, um gegeneinander anzutreten
- Klicken
Run
- Schau das Spiel...
- Lauf
- Installation
- Benötigt python3
- get_answers benötigt bs4 und html5lib
- Controller erfordert eine Möglichkeit zum Ausführen von .sh-Dateien (MinGW unter Windows)
Wertung
Der Bot mit den meisten Gewinnen ab dem 12/07/2016
12. Juli14/07/2016
(14. Juli) konnte nicht herausfinden, wie man einen Bot ausführt), gewinnt.
In diesem Chatraum kann um Hilfe beim Controller / der GUI gebeten werden
Diese Frage befindet sich seit 2014 in der Entwicklung und war die am häufigsten gestellte Frage im Sandkasten. Besonderer Dank geht an Wander Nauta (Originalautor und Konzept), PPCG Chat (Kommentare und Hilfe) und alle, die im Sandbox-Beitrag kommentiert haben (weitere Kommentare).