Du bist eine Kugel Schleim. Natürlich möchten Sie als Schleim über so viel Fläche wie möglich sickern. Aber es gibt 3 andere Schleime, die genau dasselbe tun wollen. Wer wird der überlegene Schleim sein?
Beschreibung
Alle Schleime werden in einer Arena versammelt. Die Juroren (dh das Kontrollprogramm) werden eine vollständige Liste aller möglichen 4-Schleim-Kombinationen durchgehen, sie an den Ecken eines Tisches platzieren und beobachten, welcher Schleim über den größten Bereich austritt.
Ihre Schleime können in jeder Runde eine von drei Aktionen ausführen: Ausbreiten, Springen oder Zusammenführen. Weitere Beschreibungen zu diesen Bedeutungen finden Sie im Abschnitt Ausgabe .
Vorstand / Arena
Die Arena wird ein quadratisches Brett sein (derzeit 8x8, dies kann sich jedoch in Zukunft ändern). Hier ist ein Beispiel für eine Arena eines laufenden Spiels:
11111222
11111444
11.22444
.1222.4.
333.3244
33333.44
333...44
333....4
Schleim wird durch die Zahlen 1 bis 4 (Spieler 1 bis 4) dargestellt, und der leere Raum wird durch einen Punkt ( .
) dargestellt. Anfänglich ist der Spielplan leer, mit Ausnahme einer einzelnen Einheit Schleim von Spieler 1 in der oberen linken Ecke, Spieler 2 in der oberen rechten Ecke, Spieler 3 in der unteren linken Ecke und Spieler 4 in der unteren rechten Ecke.
Koordinaten werden zur besseren Lesbarkeit im Code durch einen 0-basierten Zeilen- und Spaltenindex dargestellt. Zum Beispiel repräsentieren die Koordinaten (3, 6) das 7. Quadrat in der 4. Reihe (im obigen Beispiel a 4
). (Dies erleichtert den Zugriff auf Quadrate:. board[coords.x][coords.y]
) Hier eine visuelle Darstellung:
(0, 0) (0, 1) (0, 2)
(1, 0) (1, 1) (1, 2)
(2, 0) (2, 1) (2, 2)
Eingang
Die Eingabe Ihres Programms ist, welcher Spieler Sie sind (1, 2, 3 oder 4), ein Komma ( ,
), dann der Inhalt des Spielbretts / der Arena (wobei die Zeilenumbrüche durch Kommas ersetzt werden). Wenn Sie im obigen Szenario beispielsweise Spieler 3 wären, wäre Ihre Eingabe:
3,11111222,11111444,11.22444,.1222.4.,333.3244,33333.44,333...44,333....4
Ausgabe
Ihr Programm muss 4 Ganzzahlen ausgeben. Die ersten beiden sind der Zeilen- und Spaltenindex des Schleims, den Sie verschieben möchten, und die nächsten beiden sind der Zeilen- und Spaltenindex, in den Sie sie verschieben möchten.
In jeder Runde haben Sie drei Möglichkeiten: Ausbreiten, Springen oder Zusammenführen.
Verbreitung
Zum Ausbreiten müssen die Zielkoordinaten genau ein Quadrat vom zu bewegenden Schleim entfernt sein, und das Quadrat an den Zielkoordinaten muss ein leeres Feld sein. Beim Verteilen wird an den Zielkoordinaten ein neuer Schleim erzeugt und der alte Schleim nicht entfernt. Nachdem der neue Schleim erzeugt wurde, werden alle feindlichen Schleime auf den 8 Feldern um diesen neuen Schleim in den Spieler umgewandelt, der sich bewegt hat.
Wenn beispielsweise bei der Tafel in 1 Spieler 1 ausgeben würde
0 1 1 2
, wäre das Ergebnis die Tafel in 2.1. 2. 11.22 11.12 1..22 1.112 ..22. ..11. ..... .....
Springen
Zum Springen müssen die Zielkoordinaten genau zwei Quadrate vom zu bewegenden Schleim entfernt sein, und das Quadrat an den Zielkoordinaten muss ein leeres Feld sein. Beim Jupming wird an den Zielkoordinaten ein neuer Schleim erzeugt und der alte Schleim entfernt. Nachdem der neue Schleim erzeugt wurde, werden alle feindlichen Schleime auf den 8 Feldern um diesen neuen Schleim in den Spieler umgewandelt, der sich bewegt hat.
Wenn beispielsweise bei der Tafel in 1 Spieler 1 ausgeben würde
0 1 2 3
, wäre das Ergebnis die Tafel in 2.1. 2. 11..2 1...2 1...2 1...1 ....2 ...11 ...22 ...11
Verschmelzen
Zum Zusammenführen müssen die Zielkoordinaten genau ein Quadrat vom zu bewegenden Schleim entfernt sein, und das Quadrat an den Zielkoordinaten muss der Schleim desselben Spielers sein. Beim Verschmelzen wird der alte Schleim entfernt. Dann werden alle leeren Felder in den 8 Feldern um den Zielschleim in den Spieler umgewandelt, der sich bewegt hat (ohne den alten Schleim, der bewegt wird).
Wenn beispielsweise bei der Tafel in 1 Spieler 1 ausgeben würde
0 1 1 2
, wäre das Ergebnis die Tafel in 2.1. 2. 11..2 1.112 1.1.2 11112 ....2 .1112 ..222 ..222
Sie können auch übergeben, indem Sie einfach ungültige Koordinaten (z. B. 0 0 0 0
) ausgeben .
Regeln und Einschränkungen
Zusätzliche Regeln sind:
- Sie können Dateien in Ihrem eigenen Ordner lesen und schreiben, um die Daten zu erhalten (die Übermittlungen werden in gespeichert
players/YourBotName/yourBotName.language
). Sie dürfen jedoch keine anderen Elemente außerhalb des Ordners ändern oder darauf zugreifen. Internetzugang ist verboten. - Ihre Einreichung ist möglicherweise nicht speziell codiert, um einer anderen Einreichung zu helfen oder sie zu verletzen. (Möglicherweise haben Sie mehrere Einreichungen, diese dürfen jedoch in keiner Weise spezifisch miteinander interagieren.)
- Ihre Einreichung darf nicht länger als 0,1 Sekunden pro Runde dauern. Wenn Ihre Übermittlung gelegentlich 0,105 Sekunden dauert, ist dies in Ordnung, es kann jedoch sein, dass dies nicht immer wesentlich länger dauert als dieses Zeitlimit. (Dies ist hauptsächlich eine Überprüfung der Gesundheit, um zu vermeiden, dass das Testen zu lange dauert.)
- Ihre Einreichung darf kein genaues Duplikat (dh dieselbe Logik) einer anderen sein, auch wenn sie in einer anderen Sprache verfasst ist.
- Ihre Einreichung muss eine seriöse sein. Dies ist meinungsbasiert, aber wenn Ihr Beitrag eindeutig nicht versucht, die Herausforderung zu lösen (z. B. wenn Sie jede Runde bestehen), wird er disqualifiziert.
Wenn Ihr Beitrag gegen eine dieser Regeln verstößt oder nicht der Spezifikation entspricht, wird er disqualifiziert, entfernt playerlist.txt
und das Spiel wird von Anfang an neu gestartet. Wenn Ihr Beitrag disqualifiziert wird, hinterlasse ich einen Kommentar zu Ihrem Beitrag, in dem erläutert wird, warum. Andernfalls wird Ihr Beitrag zur Bestenliste hinzugefügt. (Wenn Sie Ihren Beitrag nicht in der Bestenliste sehen, keinen Kommentar zu Ihrem Beitrag haben und Ihren Beitrag vor der unten angegebenen "Zuletzt aktualisiert" -Zeit gepostet haben, sagen Sie mir bitte, dass ich ihn möglicherweise versehentlich übersehen habe.)
Bitte fügen Sie Ihrem Beitrag bei:
- Ein Name.
- Ein Shell - Befehl Ihres Programm (zum Beispiel laufen
java MyBot.java
,ruby MyBot.rb
,python3 MyBot.py
, etc.).- Beachten Sie, dass die Eingabe (Ihr Player und Ihre Karte) als Befehlszeilenargument an diese angefügt wird.
- Programme werden unter Ubuntu 14.04 getestet, stellen Sie also sicher, dass Ihr Code (frei) darauf ausgeführt werden kann.
- Eine Versionsnummer, wenn Ihr Code in verschiedenen Versionen Ihrer Sprache unterschiedlich funktioniert.
- Der Code Ihres Bots.
- Anweisungen zum Kompilieren des Codes, falls erforderlich.
Controller Code / Testing, Beispiel Bot
Der Controller-Code ist in C ++ geschrieben und auf Github zu finden . Weitere Anweisungen zum Ausführen und Testen Ihres Codes finden Sie dort.
simplebot.rb
, ein sehr einfacher Bot, der in jeder Runde einen zufälligen Schleim zu einem zufälligen Ort verbreitet oder springt, ist auch auf Github veröffentlicht .
Wertung und Bestenliste
Wenn alle Felder auf dem Spielplan ausgefüllt sind, endet das Spiel und die Punktzahl wird berechnet. Die endgültige Punktzahl eines Spielers ist die Anzahl der Felder, auf denen sich am Ende des Spiels der Schleim befindet. Wenn 2000 Runden vergangen sind (500 für jeden Spieler) und das Spiel noch nicht beendet ist, endet das Spiel trotzdem und die Punkte werden gemeldet, als ob das Spiel beendet wäre.
Am Ende des Turniers werden die Ergebnisse aller Spiele gemittelt, um das Endergebnis jedes Spielers zu berechnen, das auf der Rangliste veröffentlicht wird. Es gibt keine Einreichungsfrist; Ich werde die Bestenliste regelmäßig aktualisieren, sobald neue Beiträge eingehen.
Es sind 4 Einsendungen erforderlich, bis eine echte Bestenliste angezeigt wird.
+--------------------------+-----------+--------------------+
| Name | Avg Score | Last Updated (UTC) |
+--------------------------+-----------+--------------------+
| GreedySlime | 47.000 | Jul 22 10:27 PM |
| Jumper | 12.000 | Jul 22 10:27 PM |
| ShallowBlue | 5.000 | Jul 22 10:27 PM |
| Lichen | 0.000 | Jul 22 10:27 PM |
+--------------------------+-----------+--------------------+
Letzte Aktualisierung: 22. Juli, 22:27 Uhr (UTC).