Dies wurde von einem Minecraft-Minispiel inspiriert. Die Regeln sind ziemlich einfach: Sie rennen und springen herum und jeder Block, auf den Sie treten, verschwindet, sobald Sie darauf getreten sind. Das Ziel ist, der Letzte zu sein, der noch übrig ist.
Ihr Bot sollte ein vollständiges Programm sein. Es sollte Eingaben als Befehlszeilenargument akzeptieren. Die Eingabe wird eine Karte der "Welt" sein; Hier ist ein Beispiel:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx x xxxxxxxxxxxxx@xxxxxxxxxxx
xxxxxx1xxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx
xxxxxxxxxxxxxxxxx x x xxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx xxx xx3xxxxxxxxxx
xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
xxxxxxxxxxxxxxxxxxxxxxxxxxx xx
xxxxxxxxxxxxxxxxxxxxxxxxx 2
xxxxxxxxxxxxxxxxxxxxxxx
Die Legende lautet wie folgt:
x: solid block
: empty air
@: your bot
1,2,3,4,5,6,7,8,9,0: other bots
Ihr Bot sollte Ihren Zug als Ganzzahlenpaar ausgeben. Beispiel: -1, 2
Bewegt sich 1 Block nach links und 2 Blöcke nach unten (Koordinatenursprung befindet sich in der oberen linken Ecke).
Sie können bis zu vier Blocks von Ihrem aktuellen Standort in Manhattan entfernt sein. Wenn Sie versuchen, sich weiter zu bewegen, ist die Bewegung ungültig. Jede Bewegung, die Sie über die Kante hinaus bewegt, bringt Sie stattdessen an die Kante. Ungültige Züge werden ignoriert.
Sobald Sie auf einem Block landen, wird dieser entfernt. Wenn Sie in der nächsten Runde auf demselben Block bleiben, werden Sie fallen. Zwei Bots können im selben Zug auf demselben Block landen und beide überleben. In diesem Fall sehen beide Bots nur sich selbst und nicht den anderen Bot.
Wenn Sie Dateien für die Persistenz speichern müssen, tun Sie dies bitte in einem Ordner mit dem Namen Ihres Bot. Sie können möglicherweise nicht die persistenten Daten anderer Bots lesen, sofern vorhanden.
Der Match Controller ist unter https://paste.ee/p/Xf65d verfügbar .
Bitte verwenden Sie Sprachen, die auf einer Standard-Linux- oder OSX-Installation ausgeführt werden können.
Aktuelle Ergebnisse (100 Runden):
JumpBot 31
LookBot 27
ShyBot 26
Slow Bot 15
KnightBot 2
Moat Builder 0
UpBot 0
Random Bot 0
quelle
Antworten:
Langsamer Bot (Python)
Er bewegt sich in einem Linienmuster und überprüft seine Züge, bevor er sie ausführt (auch Selbstmorde, wenn er der letzte Lebende ist, der lange Laufzeiten verhindert). Er hat 195/200 Battels in meinem Testturnier gewonnen.
Ich bin kein Python-Experte und es gibt wahrscheinlich 100 Möglichkeiten, es kürzer / besser zu machen
quelle
JumpBot (C)
Versuche in der nächsten Runde mit möglichst vielen Zügen zum Feld zu springen.
quelle
LookBot (C)
Einfacher Bot, der in der Leistung dem langsamen Bot ähnlich ist, außer dass dieser zufällige mögliche Züge macht. Planen Sie, dies für PredictBot zu verbessern.
quelle
Wassergrabenbauer (Python)
Wenn ich einen Wassergraben um mich herum grabe, kann mich niemand außerhalb davon verarschen.
... auch bekannt als "Malen Sie sich in einen Eckensimulator 2016".
quelle
Monte (Python)
Sorry, das Wortspiel musste nur gemacht werden.
Wie auch immer, dieser Bot führt eine Monte-Carlo-Baumsuche für alle möglichen Zugsets durch. Denken Sie an JumpBot, nur tiefer.
Zum Ausführen ist ein zusätzliches Befehlszeilenargument erforderlich (kann im Controller angegeben werden). Es steuert, nach wie viel Zeit der Bot suchen soll (in ms); Ich habe 750-1500 beim Testen verwendet.
Code:
Versuche
25 Runden:
100 Runden:
200 Runden:
Alle oben genannten Simulationen verwendeten die Suchzeit 750. Dieser Bot wäre wahrscheinlich mit einer längeren Suchzeit sogar noch besser (ich weiß nicht, wie hoch die zulässige Höchstzahl ist).
Verbesserungen
Dieser Bot muss noch verbessert werden in:
quelle
ShyBot (Python)
Dieser Bot mag keine anderen Bots und wird versuchen, sich selbst fernzuhalten, wenn dies möglich ist. ShyBot achtet auch sehr genau darauf, wohin es geht. es wird nicht einmal auf andere Bots treten. ShyBot verliert jedoch immer noch häufig, was unsicher macht.
quelle
KnightBot (Java)
Es funktioniert wie Schach und heißt wie Twitch ...
...
.........
............................Es tut uns leid...
SwirlyBot (Java)
Dies sind eindeutig nicht die optimalen Lösungen, aber ich hoffe, dass sie für Tests auf mittlerer Ebene nützlich sind.
quelle
Zufälliger Bot, UpBot
Zwei Start-Bots, gegen die man antreten kann:
Zufälliger Bot: Ein Beispiel-Bot, der sich zufällig bewegt.
UpBot: Ein Beispiel-Bot, der sich nach oben bewegt.
quelle
StalkerBot (Python)
Kommt dem nächsten Bot so nah wie möglich. Zielt auf den (sinnlosen) automatischen Selbstmord von Slow Bot ab. (Wenn ich auf dem gleichen Feld bin und keine anderen Spieler da sind, wird es mich nicht sehen und wird Selbstmord begehen.)
quelle