¡Bienvenido a Code Bots 2!
Has aprendido tu lección desde los últimos Code Bots. Intentaste encontrar más formas de ajustar más acciones en menos líneas, y ahora finalmente lo tienes. Vas a hacer un Code Bot basado en eventos.
Su bot debe constar de 24 líneas. Cada línea sigue uno de los dos formatos:
Condition:Action
o
Action
Su bot también tiene suficiente almacenamiento para almacenar 5 enteros nombrados a A
través E
. Un número entero puede almacenar valores de 0 a 23.
Cada turno, ejecutarás una línea C
, a menos que una de las condiciones sea verdadera. Si es así, entonces C
contendrá el número de línea del condicional que es verdadero, y luego se ejecutará esa línea. Al final de cada turno, C
se incrementará.
Existen las condiciones disponibles:
Start
es cierto solo en el primer turno. Debe tener esto en su código exactamente una vezBotAt(N)
es cierto si hay un bot en la ubicación definida por NEquals(A,B)
es cierto si A es igual a B. Pueden ser de diferentes tipos, de ser así, no serán iguales.Modified(A)
es cierto siA
se copió durante el último turno.A
debe ser un nombre de variable, una línea o una condiciónAny(C1,C2,...)
es cierto si alguna de las condiciones es verdaderaNone(C1,C2,...)
es cierto si ninguna de las condiciones es verdaderaAll(C1,C2,...)
es cierto si todas las condiciones son verdaderasNot(C)
es verdadero si C es falso.C
Debe ser una condición.
Las variables pueden estar en uno de los siguientes formatos. Los primeros 9 son numéricos y se pueden usar cuando se usa N en esta página.
A
`B
`C
`D
`E
- Un número del 0 al 23
This
devolverá el número de línea en el que se encuentra actualmenteAdd(N1,N2,...)
devolverá la suma de todos los valoresSub(N1,N2)
devolverá N1 menos N2Mult(N1,N2,...)
devolverá el producto de todos los valoresDiv(N1,N2)
devolverá N1 dividido por N2Mod(N1,N2)
devolverá N1 mod N2OVar(N)
aceptará un nombre de variable y devolverá la variable del oponenteLine(N)
devolverá la enésima línea en su códigoType(N)
devolverá el enésimo tipo de línea en su código (los tipos son los nombres de las acciones)Cond(N)
devolverá la condición en la enésima líneaCondType(N)
devolverá el tipo de condición en la enésima línea (los tipos son los nombres de las condiciones)OLine(N)
devolverá la enésima línea en el código de tu oponenteOType(N)
devolverá el enésimo tipo de línea en el código de tu oponenteOCond(N)
devolverá la condición en la enésima líneaOCondType(N)
devolverá el tipo de condición en la enésima línea
A
y B
son para su uso personal, C
se usa para determinar qué línea ejecutar en su código y D
se usa como una dirección. Cada valor de se D
refiere a un par cuadrado y de dirección diferente. E
produce un valor aleatorio cada vez. D
y E
se inicializará a un valor aleatorio, de lo contrario 0
.
La dirección utilizada será [North,East,South,West][D%4]
. Tu oponente es el bot en la casilla inmediata en esa dirección.
Hay 4 acciones disponibles para usted:
Move
te moverá 1 casilla hacia adelante en laD
dirección th. Si hay un bot allí, no te moverás.Copy(A,B)
copiará la variableA
aB
.B
no puede ser un valor numérico, excepto para un nombre de variable.A
yB
no puede ser de diferentes tipos. Copiar una línea no copia la condición.Flag
no hace nada. El bot con más banderas en su código obtendrá un punto. El bot con más puntos gana.If(C,L1,L2)
llevará a cabo en la líneaL1
, siC
es cierto, de lo contrario lleva a caboL2
.C
es una condiciónL1
yL2
debe ser líneas.
El panorama
Se colocarán 50 copias de cada bot en el mundo. Tu objetivo es colocar tu bandera en tantos bots como sea posible. Por cada bot que tenga más de su tipo de bandera que cualquier otro tipo de bandera, obtendrá un punto.
Los bots se colocarán de la siguiente manera:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
Se ejecutarán 10 juegos y se promediarán los puntos en todos los juegos, determinando quién es el ganador.
Notas al margen
Si se aplican varias condiciones, la que sigue más immedately Start
se ejecutará
Los bots se empaquetarán estrechamente, pero no comenzarás junto a otro bot. (Técnicamente tendrá el mismo formato que los últimos CodeBots)
Como este desafío no se publicó en el sandbox (para no darle una ventaja a nadie), me reservo el derecho de cambiar pequeños detalles para ser justos o capacidades adicionales. Además, si hay un error en el corredor de CodeBots, lo cambiaré, incluso si un bot dependía de ese error para su éxito. Estoy tratando de ser lo más justo posible.
Las If
declaraciones recursivas no se ejecutarán
Si su bot tiene menos de 24 líneas, las líneas restantes se llenarán con Flag
Recuerde al copiar a su cuenta C
, que C
se incrementa al final de su turno.
El intérprete de CodeBots se puede encontrar aquí . Incluye un archivo .jar para una fácil ejecución. Simplemente agregue su bot a la carpeta de bots
Puntuaciones
- 893.9 Borg
- 1.3 LazyLioness
- 0.9 Defensor
- 0.5 abanderado
- 0.4 CliqueBot
- 0.4 insidioso
- 0.3 atacante
- 0.3 Gard
- 0.3 SingleTarget
- 0.2 FreezeBot
- 0.2 Centinela
- 0.2 en espera
- 0.0 AntiInsidious
- 0.0 MoveBot
- 0.0 CliqueBorg
- 0.0 Calculadora
- 0.0 TestBot
- 0.0 imitador
ACTUALIZAR
Las líneas de código ahora se rotan cuando ves el código de tu oponente. Eso significa que la línea 1 de tu oponente puede ser la línea 14 (o cualquier línea). Un bot tendrá un desplazamiento fijo que compensará sus líneas en X
cantidad cuando sea visto por un oponente . La C
variable del oponente también será compensada por la misma X
cantidad. X
no cambiará dentro del mismo juego, pero cambiará de un juego a otro.