Code Bots
Odio las variables privadas y protegidas. ¡Solo quiero acceder a todo!
Si eres como yo, ¡este desafío es para ti!
Escribe un bot que funcione en armonía con otros bots para que otros hagan lo que quieras. Eres programador y sabes cómo se supone que funcionan las cosas. Su trabajo es convertir tantos bots a su manera como sea posible.
El código
Tendrás 24 líneas de código para escribir tu bot. Cada turno, cada bot ejecutará 1 línea secuencialmente.
Cada bot almacena 5 variables a Através E. Ay Bson para uso personal, Calmacena la siguiente línea para ejecutar, Dalmacena la dirección actual y Ees un número aleatorio. Las variables comienzan en 0, excepto para D, que comenzará en un valor aleatorio. Todas las variables solo tienen tienda 0-23. Los números mayores o menores serán modulados por 24.
En esta publicación, usaré al oponente como el bot adyacente al que te enfrentas
Cada línea debe contener uno de los siguientes 5 comandos:
Flagno hace nada. Excepto que así es como ganasMovemueve tu bot en laDdirección th. Si un bot ya ocupa el espacio, no ocurrirá ningún movimientoCopy Var1 Var2copia el contenido de Var1 en Var2If Condition Line1 Line2Si la condición es verdadera, ejecuta Line1, de lo contrario Line2Block Var1bloquea la próxima escritura en una variable
Una variable se puede usar de la siguiente manera:
#Varusará la variable como un número de línea. Si Aes 17, Copy #8 #Acopiará el contenido de la línea 8 en la línea 17.
*Varusará la variable de su oponente. Copy 5 *Cconfigurará la Cvariable del oponente para 5
Var+Varagregar las dos variables. Copy D+1 Drotará el bot hacia la derecha
Cuando Dse usa como una dirección, [North, East, South, West][D%4]se usará
Estos modificadores se pueden encadenar: Copy *#*C #9copiará la siguiente línea que su oponente ejecutará en su propio código en la línea 9. se **Drefiere a la Dvariable del oponente .
Una condición se evaluará de la siguiente manera:
- Si
Var:- Si Var ha
AterminadoC, devolverá verdadero si Var es distinto de cero, de lo contrario falso. - Si Var es
D, devolverá verdadero si hay un bot en laDdirección th, de lo contrario falso - Si Var es
E, devolverá verdadero si E es impar, de lo contrario falso - Si Var es una línea, devolverá verdadero si es una línea de bandera
- Si Var ha
- Si
Var1=Var2:- Devuelve verdadero si ambos son
A-E, e igual al mismo número - Devuelve verdadero si ambas son líneas y el tipo de línea es igual
- Devuelve verdadero si ambos son
- Si
Var1==Var2:- Devuelve verdadero si ambos son
A-E, e igual al mismo número - Devuelve verdadero si ambas son líneas y son idénticas (las banderas de diferentes bots no serán iguales)
- Devuelve verdadero si ambos son
Se colocarán 50 bots de cada tipo en un mundo toroidal con el siguiente patrón:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
..B...B...B...B.
Después de cada juego de 5,000 turnos, se contarán las banderas en cada bot. Obtienes un punto si un bot tiene más de tu bandera que cualquier otro tipo de bandera. Si se trata de un empate entre Nbots, no se otorgan puntos.
Habrá 10 juegos y los puntajes se acumularán al final.
Notas al margen
Los comentarios de fin de línea están permitidos y se denotan con //
Intentar hacer algo que no tiene sentido, como agregar a una línea, no hará nada
Intentar hacer algo en un bot inexistente no hará nada
La recursión infinita en un Iftestamento terminará sin que se ejecute ninguna línea.
If no cambia el valor de C
A Blockno caduca hasta que alguien intente escribirle
Se pueden bloquear varias variables y líneas a la vez
BlockInventar una variable varias veces se bloqueará varias veces siempre que la segunda instrucción de bloque esté en una línea de código diferente a la primera.
Los espacios solo se permiten entre argumentos (y después del comando)
Si un bot tiene menos de 24 líneas, Flag será el resto de las líneas.
Programa de muestra
Copy 2 C //Skip to the If line
Flag //Where I'm storing my flag
Move //Move in the D'th direction
If D #5 #2 //If there's a bot, copy code, otherwise, move!
Copy #1 *#E //Copy my flag onto a random spot in my bot's code
Copy 2 C //Skip back to the If line
El programa será ejecutado por mi controlador Python aquí .
El controlador Java está aquí. Es rápido y se ve mucho mejor que el de Python.
Marcador:
- 6837 $ Copia
- 3355 Lockheed
- 1695 MindControl
- 967 bizantino
- 959 AttackOrElse
- 743 Cadmyllion
- 367 Influenza
- 251 TheCommonCold
- 226 Magus
- 137 HideBlockAttack
- 129 RowBot
- 123 FastMoveCloneDodge
- 112 FastForwardClone
- 96 QuickFreeze
- 71 RepairAndProtect
- 96 SuperFreeze
- 93 RovingVirus
- 80 ForwardClone
- 77 FreezeTag
- 68 Palimpseste
- 62 BlockFreezeAttack
- 51 RushAttackDodge
- 46 bloqueador
- 40 TurretMaker
- 37 Copycat
- 37 Kamikaze
- 35 FlagInjector
- 33 RandomCopier
- 31 insidioso
- 29 HappyAsAClam
- 25 NanoVirus
- 21 Nulificador
- 19 Nanoviris
- 17 aburrido
- 16 Movebot
- 14 Flagbot
- 13 neutralizador
- 12 cáncer
- 9 DNAbot
- 9 parásito
- 8 MetaInsidious
- 8 Rebranding
- 8 AdaptiveBot
- 8 ReproducciónBot
- 8 KungFuBot
- 5 QuickFreezerbot
- 4 atacante