Todos los bots en el campo de batalla de repente se pusieron a pensar y nadie puede explicar por qué. Pero a quién le importa mientras puedan pelear, aunque Brainfuck es el único idioma que entienden.
Ha pasado un tiempo desde la última presentación, así que finalmente anunciaré al ganador de BrainFuckedBotsForBattling: ¡ Felicitaciones a LymiaAluysia por ganar con NyurokiMagicalFantasy!
Marcador
| Owner | Bot Score |
|--------------------|-------------------------------|
| LymiaAluysia | NyurokiMagicalFantasy - 600 |
| Sylwester | LethalLokeV2.1 - 585 |
| weston | MickeyV4 - 584 |
| Sp3000 | YandereBot - 538 |
| Comintern | CounterPunch - 512 |
| Sylwester | BurlyBalderV3 - 507 |
| LymiaAluysia | NestDarwin - 493 |
| IstvanChung | Bigger - 493 |
| Manu | DecoyMaster - 489 |
| archaephyrryx | Wut - 478 |
| DLosc | LightfootPlodder - 475 |
| archaephyrryx | 99BottlesOfBats - 461 |
| Sylwester | TerribleThorV2 - 458 |
| MikaLammi | WallE2.0 - 443 |
| Mikescher | MultiVAC - 441 |
| archaephyrryx | Twitcher - 439 |
| Timtech | MetalDetector - 438 |
| AndoDaan | BeatYouMate - 433 |
| csarchon | TheWallmaster - 427 |
| Sparr | SeeSawRush - 412 |
| archaephyrryx | Stitcher - 406 |
| PhiNotPi | RandomOscillator - 403 |
| ccarton | AnybodyThere - 398 |
| Comintern | 2BotsOneCup - 392 |
| kaine | SternBot - 387 |
| PhiNotPi | EvoBot2 - 385 |
| PhiNotPi | EvoBot1 - 381 |
| Brilliand | TimedAttack - 373 |
| Sylwester | ReluctantRanV2 - 373 |
| AndoDaan | PrimesAndWonders - 359 |
| Nax | TruthBot - 357 |
| DLosc | Plodder - 356 |
| weston | FastTrapClearBot - 345 |
| MikaLammi | PolarBearMkII - 340 |
| Sp3000 | ParanoidBot - 336 |
| Moop | Alternator - 319 |
| TestBot | FastClearBot - 302 |
| icedvariables | PyBot - 293 |
| TestBot | DecoyBot - 293 |
| kaine | BestOffense - 291 |
| Geobits | Backtracker - 289 |
| bornSwift | ScribeBot - 280 |
| IngoBuerk | Geronimo - 268 |
| flawr | CropCircleBot - 239 |
| plannapus | CleanUpOnAisleSix - 233 |
| frederick | ConBot - 230 |
| frederick | 128Bot - 222 |
| AndoDaan | EndTitled - 219 |
| PhiNotPi | CloakingDeviceBot - 215 |
| AndoDaan | GetOffMate - 206 |
| DLosc | ScaredyBot - 205 |
| isaacg | CleverAndDetermined - 202 |
| PhiNotPi | CantTouchThis - 202 |
| Moop | StubbornBot - 174 |
| Cruncher | StallBot - 168 |
| IngoBuerk | Gambler - 157 |
| BetaDecay | RussianRoulette - 129 |
| flawr | DoNothingBot - 123 |
| SebastianLamerichs | Dumbot - 115 |
| mmphilips | PacifistBot - 112 |
| SeanD | DontUnderstand - 92 |
| proudHaskeller | PatientBot - 83 |
| frederick | Dumberbot - 70 |
| flawr | MetaJSRandomBot - 68 |
| Darkgamma | TheRetard - 61 |
| BetaDecay | Roomba - 61 |
| BetaDecay | PrussianRoulette - 31 |
| frederick | Dumbestbot - 0 |
Puntajes finales del 09.10.2014
EDITAR6 : Registros descartados debido al tamaño extremo y tiempo de ejecución. Puede generarlos usted mismo descomentando las líneas RunThisTournament.py
.
EDIT5 : Se implementó el manejo de abreviaturas en el controlador, ya no hay tiempos de ejecución enormes. Esto tiene el efecto secundario de que los números y paréntesis ya no se tratan como comentarios. Todavía puede usarlos si desea proporcionar una versión anotada, pero sería muy útil si también hubiera una versión no comentada de su código , por lo que no necesito eliminar los comentarios manualmente. ¡Gracias!
EDITAR4 : Cambió el título, porque el torneo se eliminó de las preguntas de la red. ¡Gracias a @Geobits por señalar esto!
EDITAR3 : Los comentarios eliminados en los programas bf, debido a un resultado inesperado, deberían repararse ahora. Si alguien tiene problemas para eliminar sus comentarios, por favor repórtelo.
EDIT2 : Dado que causó un tiempo de ejecución arcano en mi computadora bastante lenta, reduje el límite de tiempo de espera de 100000 ciclos a 10000 ciclos. No es que nadie haya convertido el resultado de un juego en ejecución más allá de este punto de todos modos.
EDITAR1 : se corrigió un error en el script de conversión que hacía que el intérprete no ignorara los números en los programas comentados.
Descripción
Este es un torneo Brainfuck inspirado en BF Joust . Dos bots (programas Brainfuck) están luchando entre sí en una arena que está representada por una cinta de memoria. Cada celda puede contener valores desde -127 hasta 128 y ajustarse a sus límites (por lo tanto, 128 + 1 = -127).
Las instrucciones válidas son similares a Brainfuck regular, lo que significa:
+ : Increment cell at your pointer's location by 1
- : Decrement cell at your pointer's location by 1
> : Move your memory pointer by 1 cell towards the enemy flag
< : Move your memory pointer by 1 cell away from the enemy flag
[ : Jump behind the matching ']'-bracket if the cell at your pointer's location equals 0
] : Jump behind the matching '['-bracket if the cell at your pointer's location is not 0
. : Do nothing
La arena tiene un tamaño de 10 a 30 celdas que se elige pseudoaleatoriamente en cada batalla. En ambos extremos se encuentra una 'bandera' que tiene un valor inicial de 128, mientras que todas las demás celdas están puestas a cero. El objetivo de tu bot es poner a cero la bandera del enemigo durante 2 ciclos consecutivos antes de que ponga a cero tu propia bandera.
Cada bot comienza en su propia bandera, que es la celda [0] desde su propia perspectiva. El oponente se encuentra al otro lado de la cinta.
[ 128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 128 ]
^ ^
my bot other bot
Ambos bots ejecutan su acción simultáneamente, esto se considera un ciclo. El juego termina después de 10000 ciclos o tan pronto como se alcance una de las condiciones ganadoras. Si uno de los programas llega a su fin, simplemente deja de hacer nada hasta el final del juego, pero aún puede ganar.
Condiciones ganadoras
Su bot gana bajo una de las siguientes condiciones:
- La bandera de tu enemigo se pone a cero antes que la tuya
- Su enemigo mueve su puntero fuera de la cinta (se ejecuta
>
en su bandera o<
solo) - El valor de su bandera está más lejos de 0 que el valor de la bandera de su oponente después de 10000 ciclos.
Reglas
Su publicación debe contener un nombre para su bot y su código.
- Puede usar la siguiente sintaxis de abreviatura para hacer que su código sea más legible:
- por ejemplo,
(+)*4
es lo mismo++++
, esto es válido para cualquier instrucción, excepto paréntesis sin paréntesis, ya que la lógica de bucle colisiona con la lógica de abreviatura. Por favor, use en[-[-[-
lugar de([-)*3
- por ejemplo,
- Cualquier otro carácter que
+-><[].
sea un comentario y, por lo tanto, se ignora, excepto las()*
abreviaturas
Los bots que no sigan las reglas serán excluidos del torneo.
- Solo se permite Brainfuck básico, no hay otras variantes que admitan procedimientos u operaciones aritméticas.
- El código fuente de su bot no debe contener corchetes sin igual
Puede informarse sobre estrategias básicas, pero no use el código de otro para su propio bot.
Puntuación
La puntuación de un bot está determinada por el número de victorias contra todos los demás bots. Un encuentro entre 2 bots consiste en 10 partidos con diferentes longitudes de cinta de memoria, lo que resulta en una puntuación máxima de 10 puntos por encuentro. Un empate no genera puntos para este partido.
Programa de control
Puedes encontrar el programa de control en github, junto con los registros completos de las batallas. La tabla de clasificación se publicará aquí una vez que se haya generado.
Siéntase libre de clonar el repositorio y pruebe su bot contra los demás por su cuenta. Se usa python Arena.py yourbot.bf otherbot.bf
para correr un partido. Puede modificar las condiciones con los indicadores de línea de comandos -m
y -t
. Si su terminal no admite secuencias de escape ANSI, use la --no-color
bandera para deshabilitar la salida en color.
Bots de ejemplo
FastClearBot.bf
(>)*9 Since the tape length is at least 10, the first 9 cells can be easily ignored
([ Find a non-zero cell
+++ Increment at first, since it could be a decoy
[-] Set the cell to zero
]> Move on to the next cell
)*21 Repeat this 21 times
DecoyBot.bf
>(+)*10 Set up a large defense in front of your flag
>(-)*10 Set up another one with different polarity
(>+>-)*3 Create some small decoys
(>[-] Move on and set the next cell to zero
. Wait one round, in case it is the enemy's flag
)*21 Repeat this 21 times
DecoyBot ganará cada partida con una longitud de cinta superior a diez, ya que FastClearBot puede evitar los señuelos pequeños, pero no los más grandes. La única situación en la que FastClearBot puede ganar contra DecoyBot es cuando es lo suficientemente rápido como para alcanzar la bandera del enemigo antes de que su oponente haya acumulado grandes señuelos.