Willkommen bei Code Bots 2!
Sie haben Ihre Lektion seit den letzten Code Bots gelernt. Sie haben versucht, mehr Möglichkeiten zu finden, um mehr Aktionen in weniger Zeilen zu integrieren, und jetzt haben Sie es endlich. Sie werden einen ereignisgesteuerten Code-Bot erstellen.
Ihr Bot muss aus 24 Zeilen bestehen. Jede Zeile folgt einem der beiden Formate:
Condition:Action
oder
Action
Ihr bot auch genügend Speicher 5 ganze Zahlen speichern Namen A
durch E
. Eine Ganzzahl kann Werte von 0 bis 23 speichern.
In jeder Runde führen Sie eine Linie aus C
, es sei denn, eine der Bedingungen ist erfüllt. Wenn ja, dann C
enthält die Zeilennummer der Bedingung, die wahr ist, und dann wird diese Zeile ausgeführt. Am Ende jeder Runde C
wird erhöht.
Es gibt die verfügbaren Bedingungen:
Start
ist nur in der ersten Runde wahr. Sie müssen dies genau einmal in Ihrem Code habenBotAt(N)
ist wahr, wenn sich an der durch N definierten Stelle ein Bot befindetEquals(A,B)
ist wahr, wenn A gleich B ist. Sie können verschiedene Typen sein, wenn ja, sind sie nicht gleich.Modified(A)
ist wahr, wennA
in der letzten Runde kopiert wurde.A
muss ein Variablenname, eine Zeile oder eine Bedingung seinAny(C1,C2,...)
ist wahr, wenn eine der Bedingungen wahr istNone(C1,C2,...)
ist wahr, wenn keine der Bedingungen wahr istAll(C1,C2,...)
ist wahr, wenn alle Bedingungen wahr sindNot(C)
ist wahr, wenn C falsch ist.C
muss eine Bedingung sein.
Variablen können in einem der folgenden Formate vorliegen. Die ersten 9 sind numerisch und können verwendet werden, wenn N auf dieser Seite verwendet wird.
A
,B
,C
,D
,E
- Eine Zahl von 0 bis 23
This
gibt die Zeilennummer zurück, auf der es sich gerade befindetAdd(N1,N2,...)
gibt die Summe aller Werte zurückSub(N1,N2)
gibt N1 minus N2 zurückMult(N1,N2,...)
gibt das Produkt aller Werte zurückDiv(N1,N2)
gibt N1 geteilt durch N2 zurückMod(N1,N2)
wird N1 mod N2 zurückgebenOVar(N)
akzeptiert einen Variablennamen und gibt die Variable des Gegners zurückLine(N)
gibt die N-te Zeile in Ihrem Code zurückType(N)
gibt den N-ten Zeilentyp in Ihrem Code zurück (die Typen sind die Namen der Aktionen)Cond(N)
gibt die Bedingung in der N-ten Zeile zurückCondType(N)
gibt den Bedingungstyp in der N-ten Zeile zurück (die Typen sind die Namen der Bedingungen)OLine(N)
gibt die N-te Zeile im Code Ihres Gegners zurückOType(N)
gibt den N-ten Zeilentyp im Code Ihres Gegners zurückOCond(N)
gibt die Bedingung in der N-ten Zeile zurückOCondType(N)
gibt die Konditionsart in der N-ten Zeile zurück
A
und B
sind für Ihren persönlichen Gebrauch bestimmt, C
werden verwendet, um zu bestimmen, welche Zeile in Ihrem Code ausgeführt werden soll, und D
werden als Richtung verwendet. Jeder Wert von D
bezieht sich auf ein anderes Quadrat- und Richtungspaar. E
erzeugt jedes Mal einen zufälligen Wert. D
und E
wird andernfalls auf einen zufälligen Wert initialisiert 0
.
Die verwendete Richtung wird sein [North,East,South,West][D%4]
. Ihr Gegner ist der Bot auf dem unmittelbaren Feld in dieser Richtung.
Ihnen stehen 4 Aktionen zur Verfügung:
Move
bewegt Sie 1 Feld vorwärts in dieD
th-Richtung. Wenn dort ein Bot ist, werden Sie sich nicht bewegen.Copy(A,B)
kopiert die VariableA
nachB
.B
kann kein numerischer Wert sein, außer für einen Variablennamen.A
undB
kann nicht von verschiedenen Arten sein. Durch das Kopieren einer Zeile wird die Bedingung nicht kopiert.Flag
tut nichts. Der Bot mit den meisten Flags in Ihrem Code erhält einen Punkt. Der Bot mit den meisten Punkten gewinnt.If(C,L1,L2)
führt die Zeile aus,L1
wenn dies derC
Fall ist, andernfalls wird ausgeführtL2
.C
ist eine BedingungL1
undL2
muss Linien sein.
Das große Bild
50 Exemplare jedes Bots werden in die Welt gebracht. Ihr Ziel ist es, Ihre Flagge in so viele Bots wie möglich zu bringen. Für jeden Bot, der mehr von Ihrem Flaggentyp als jeder andere Flaggentyp hat, erhalten Sie einen Punkt.
Die Bots werden wie folgt platziert:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
Es werden 10 Spiele gespielt und die Punkte werden über alle Spiele gemittelt, um zu bestimmen, wer der Gewinner ist.
Randnotizen
Wenn mehrere Bedingungen zutreffen, dann derjenige, der die meisten immedately folgt Start
wird ausgeführt
Die Bots werden dicht gepackt sein, aber Sie werden nicht neben einem anderen Bot starten. (Es wird technisch das gleiche Format wie die letzten CodeBots haben)
Da diese Herausforderung nicht in der Sandbox veröffentlicht wurde (um niemandem einen Vorteil zu verschaffen), behalte ich mir das Recht vor, kleine Details aus Gründen der Fairness oder zusätzlicher Funktionen zu ändern. Wenn der CodeBots-Runner einen Fehler enthält, werde ich ihn ändern, auch wenn ein Bot für seinen Erfolg von diesem Fehler abhängig war. Ich versuche so fair wie möglich zu sein.
Rekursive If
Anweisungen werden nicht ausgeführt
Wenn Ihr Bot kürzer als 24 Zeilen ist, werden die verbleibenden Zeilen mit gefüllt Flag
Denken Sie daran C
, dass beim Kopieren in Ihre eigenen C
am Ende Ihres Zuges erhöht wird.
Den CodeBots-Interpreter finden Sie hier . Es enthält eine JAR-Datei zur einfachen Ausführung. Fügen Sie einfach Ihren Bot zum Bots-Ordner hinzu
Scores
- 893,9 Borg
- 1.3 LazyLioness
- 0,9 Verteidiger
- 0,5 Flagger
- 0,4 CliqueBot
- 0,4 heimtückisch
- 0.3 Angreifer
- 0,3 Gard
- 0.3 SingleTarget
- 0.2 FreezeBot
- 0,2 Sentinel
- 0.2 Driveby
- 0.0 AntiInsidious
- 0.0 MoveBot
- 0.0 CliqueBorg
- 0.0 Rechner
- 0.0 TestBot
- 0.0 Nachahmer
AKTUALISIEREN
Codezeilen werden jetzt gedreht, wenn Sie den Code Ihres Gegners anzeigen. Das heißt, die Linie 1 Ihres Gegners kann Linie 14 sein (oder welche Linie auch immer). Ein Bot hat einen festen Versatz, der seine Linien bei Betrachtung durch einen Gegner um den X
Betrag versetzt . Die Variable des Gegners wird ebenfalls um den gleichen Betrag versetzt. wird sich nicht innerhalb desselben Spiels ändern, aber es wird sich von Spiel zu Spiel ändern.C
X
X