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.
fuente
Respuestas:
Nyuroki Magical Fantasy
Creo que es hora de tomar en serio ~ Terminé mi compilador para un poco de HLL para facilitar la escritura de programas BF Joust. Este fue mi primer intento serio de hacer algo con eso. El concepto del bot es bastante simple. Configura algunos señuelos de polaridades variables, luego se vuelve loco con un gran movimiento de despeje con un claro de compensación inversa en el medio.
Ah, por cierto, el puntaje esperado es de aproximadamente 577 puntos contra la colina de la última ronda. Esa es una tasa de ganancia del 93%. <3
Compilado | Código fuente
Editar : Exprimí algunas victorias más de Nyuroki.
Edición 2 : ¡Oye, mira, lo hice de nuevo!
Edición 3 : Después de luchar por un tiempo con un estúpido error de análisis en Arena.py, finalmente obtuve otra mejora en ~ Esto es lo que quiero decir con "hora de ponerse serio", ya sabes. <3
fuente
)
y*
o entre*
y número?Dispositivo de camuflaje Bot
Este bot básicamente trata de ocultar su base, por lo que otros bots se moverán más allá de él y fuera de la cinta.
fuente
Burly Balder v3
Burly Balder es una carrera media lenta. Hace dos señuelos grandes antes de pasar al modo apresurado. En el modo acelerado, tiene un bucle que solo usa 4 pasos cada celda cero y cuando una celda distinta de cero tiene un análisis de caso para [-18,18] antes de reducir a ciegas con 107 antes de borrar con
[-.]
. Despeja una bandera sin cambios en 242 pasos, 114 más que un claro incierto-*128
y 14 menos que un[-]
claro ingenuo . Cuando se despeja una celda, continúa dejando un rastro de -2 señuelos. Tiene un caso especial solo para el índice 9 para guardar algunos pasos para juegos de tamaño 10 y deja la celda con un señuelo 1.Trivia: Balder es un dios nórdico e hijo de Odin. Es conocido principalmente por la historia de su muerte : tenía miedo por su seguridad, por lo que los otros dioses trataron de predecir y proteger contra todas las amenazas. Finalmente fue asesinado por Loki, ya que mientras lo protegieron contra espadas y flechas, olvidaron protegerlo contra el muérdago.
fuente
BeatYouMate
fuiste inteligente. Me temo que los señuelos en la mayoría de los bots se harán aún más grandes la próxima ronda hasta que se penalice. Entonces quizás tengamos algunas estrategias más geniales emergentes :)EvoBot 1
Este es un bot simple creado a través de un algoritmo genético. Comencé con una plantilla, y mi programa ajustó lentamente los números para crear un mejor robot guerrero. El siguiente código ha sido editado para aumentar la legibilidad.
Usé las otras entradas en la competencia para medir la aptitud de los diferentes candidatos.
Dado que este fue mi primer intento con un evobot, comencé con una plantilla simple:
Predigo que este bot recibirá una puntuación en el rango de 50 a 60.
Actualmente estoy trabajando en una plantilla de señuelo inverso.EvoBot 2
Este es un bot creado por el mismo algoritmo genético, pero con la siguiente plantilla:
Este bot utiliza la estrategia de señuelo inverso para establecer 4 señuelos de altura variable. El bot resultante es:
Espero que a este nuevo bot le vaya mejor que a los bots anteriores, posiblemente obteniendo una puntuación en los años 70 (probablemente mucho más alto que eso ya que hay muchas entradas nuevas).
fuente
Alternador
Se supone que la mayoría de las personas pondrá a cero una celda al sumarla o restarla, por lo que, en promedio, cada celda tomará 128 vueltas a cero.
Versión anotada
fuente
Entonces, alguien más aquí está usando un algoritmo genético para tratar de hacer programas aquí. Bueno ... hace mucho tiempo, escribí un BF Joust evolver para una colina en curso en un canal IRC. Decidí darle un giro a este concurso también ~
Y ... a diferencia de la otra persona con un evolver, mi evolver en realidad puede cambiar más del programa más que los recuentos repetidos. :)
NestDarwin (Generación 309)
Este es el mejor resultado que mi evolucionador ha llegado hasta ahora. No estoy seguro de cuánto ayuda la estructura anidada en este caso, pero estructuras como esta era lo que el evolucionista debía hacer. El rendimiento esperado en la colina del 27.08.2014 es de 474 puntos. (Calculado ejecutando la batalla en las 21 longitudes de cinta y multiplicándolo por 21/10. Tenga en cuenta que esto no está normalizado por el hecho de que esta colina tiene un programa adicional)
EDITAR : Se modificó la lista de programas que quiero ingresar a esta colina. Corrió evolver durante la noche. :)
EDIT 2 : Fui y analicé manualmente la salida del evolver. A pesar de verse muy diferente, NestDarwin es básicamente una versión optimizada de TinyDarwin ... Minimizado manualmente (con idéntica funcionalidad) y analizado:
Entonces, un programa casi idéntico sería el siguiente ... que es básicamente una versión súper optimizada de TinyDarwin.
TinyDarwin fue como sigue. No muy diferente, cariño? Solo voy a retirarlo de la colina. Pensé que era distinto, pero ... bueno, estaba equivocado.
Es evidente que la colina actual no es lo suficientemente fuerte como para permitirle evolucionar cosas mucho más complejas. :(
fuente
Oso polar Mk II
Hay dos tipos de osos polares : los que quedan atrapados y los que atrapan a otras personas.
Intenta adivinar la polaridad del oponente y luego usa esa información para bloquear al oponente en un bucle infinito. Funciona bien contra estrategias de limpieza simples y algo aleatoriamente contra otras. Las trampas se pueden evitar fácilmente, por lo que podría agregar algunas estrategias de respaldo más adelante.
fuente
(]< (+)*290 (>)*9 ... [-])*2
?+
y la otra usa-
.[(+)*3[-]]
,[(-)*6[+]]
) y funciona muy bien (al menos para compensaciones bastante pequeñas).>>>>>>>>>((-)*4[+][--.]>)*21
que verifica dos veces la celda y(+/-)*290
estaba causando que se disparara el segundo bucle fuera de sincronización. No es culpa del claro compensado.Bot pacifista
Mi bot cree que la violencia nunca es la respuesta y tratará de evitar el combate a toda costa.
fuente
¿Alguien?
Periódicamente mira hacia atrás para determinar cuándo el enemigo ha comenzado a limpiar sus señuelos, luego se apresura hacia adelante.
Parece hacerlo bien, pero no estoy seguro de si eso se debe a la estrategia o simplemente porque estoy agregando 10 a cada celda antes de borrar.
Editar: se corrigió un problema de lógica. Primera vez escribiendo un programa de brainfuck. Hace honor a su nombre.
fuente
WALL-E 2.0
Se apresura a la ubicación 9 y agrega 128, ganando rápidamente en la arena de tamaño 10 si el oponente no ha cambiado el valor inicial de la bandera. En arenas más grandes, esto funciona como señuelo grande. Después de eso, llena el espacio entre la ubicación 9 y la propia bandera con grandes señuelos. Cuando se colocan señuelos, busca ubicaciones no vacías e intenta borrarlas rápidamente.
La versión 2.0 construye señuelos más grandes y tiene cierta tolerancia contra el cambio del valor del indicador inicial. También puede cambiar a una estrategia de respaldo si las cosas comienzan a verse complicadas.
La efectividad de este bot se basa en dos hechos:
fuente
Lethal Loke V2.1 (con muérdago)
Por supuesto, este es un bot mortal y mata no solo al hermoso Burly Balder a con muérdago, sino que también gana casi todas las veces contra los otros bots. Es una carrera combinada media y rápida. Mi examen me da un puntaje de 567
Archivo BFJ compilado para la batalla , fuente del generador Racket BFJ:
Trivia : Loke (Loki) es un dios en la mitología nórdica que le gusta jugar con todos y engañarlos. Es un cambiaformas (en animales y personas) y generalmente sigue sus propios caminos. En las historias a menudo viaja y ayuda a los otros dioses y hace pequeños trucos y agita las cosas. Además de matar a Balder, engendró a Hel (diosa del infierno / Helvete), la bestia Fenrir y la serpiente Midgard que inicia Ragnarok (armageddon nórdico).
Cómo funciona
Al principio, hace un señuelo grande (-17) y luego crea un
+-
patrón hasta el índice 7. Escanea hacia adelante desde 13 dejando un rastro de señuelos (+ 10, -32) +, pero cuando detecta un conjunto, abortará e iniciar un modo medio * 1 rush. Si no hay celdas configuradas, también iniciará el modo lento * 3 rush.* 1 En el modo de carrera media, ha detectado actividad del oponente en uno de los índices 7-13 y comienza desde el índice 2. Algunos oponentes dejan un cero y otros dejan un valor diferente y ahora tiene medios para detectar la actividad del oponente mientras antes de hacer señuelos en índice 2-6 (-32, + 10) +. Si la celda no tiene el valor esperado (-1, 1) o si ha terminado de hacer todos los señuelos, pasa al modo rápido * 2 rush.
* 2 El modo de aceleración rápida que espera que haya sido detectado para que los señuelos no funcionen. Esperamos que los que ya hemos establecido detengan al oponente y se centren en atravesar señuelos de oponentes. Comienza a apresurarse en el punto más lejano que conocemos según el escaneo anterior [9,14] o el índice 9 si nos hicieron antes de eso. Él tiene un caso especial para el primer señuelo en el que simplemente agregamos 120 y plodd 27, ya que no quiere reducir el valor por debajo de cero en caso de que sea una trampa, pero para cada señuelo después de movernos a [-8,8] antes de aumentar 120 y avanzando 27 pasos antes de continuar hacia la celda siguiente.
Se eliminó el modo de aceleración lenta ya que no afectó el puntaje con la colina actual y hace que mi bot sea un poco más pequeño (pero no mucho).
fuente
Geronimo
Es aún más ofensivo que el robot BestOffense de kaine, ya que no acumula ninguna defensa. La estrategia aquí es: otros tratarán de ser inteligentes, pero ser inteligente requiere ciclos. Pasemos a la parte en la que sabemos que está el enemigo y eliminemos todo lo que encontremos.
Parece ganar la mayoría de los partidos contra los bots de ejemplo del OP y el bot de Kaine.
fuente
SternBot
Un verdadero bot medio serio ahora que las cosas han comenzado. Abordar la naturaleza simular de algunos de estos bots.
fuente
No hacer nada
No hace nada
EDITAR: Wow, me sorprendió ver que hizo un mejor trabajo que más del 20% de todos los bots =) (¿Esto significa que usa una estrategia superior o ...?)
fuente
DoNothingBot
CounterPunch - Editado
Combinación equilibrada de construir una defensa fuerte y luego atacar.
Anotado:
Defiende de manera similar al Backtracker de @ Geobit , pero se defiende contra los atacantes rápidos colocando primero un señuelo rápido frente a la bandera.
El ataque es un despeje anidado con polaridad opuesta para limpiar rápidamente los señuelos con valores pequeños. El peor de los casos debería ser un señuelo de 64 (polaridad).
Edición 1: Mejora la eficiencia de ataque contra señuelos (tuvo un error lógico en el cambio de polaridad).
Edición 2: Las pruebas indican que la pausa funciona ligeramente mejor en el bucle más interno.
fuente
Backtracker
Una estrategia de señuelo inverso. Comienza a colocar señuelos desde la parte delantera hacia atrás, para que nadie se salte el resto mientras los estoy construyendo.
Si el tablero es menor que el tamaño 20 más o menos, esto no funciona contra los bots de ataque rápido, ya que nos pasaremos antes de comenzar a decodificar.
Nota: No hago BF, pero esto me hace lo que quiero. Si no, déjame ahora.
fuente
No puedo tocar esto
Este es un programa orientado a la defensa que intenta determinar cómo el oponente limpia las celdas y construye un señuelo del tamaño apropiado.
Actualmente estoy trabajando en una versión que puede ganar contra ambas polaridades.
fuente
ImpatientTripwire (también conocido como YandereBot)
Intenta ser un cable trampa para que pueda colocar señuelos de (en su mayoría) la polaridad correspondiente, pero se da por vencido si toma demasiado tiempo y asume que es la paridad opuesta. Tiene un cable invertido para tablas pequeñas.
Versión actual: 1.3 : editada para mejorar en tableros más pequeños, a expensas de perder juegos debido a que los enemigos se escabullen durante la comprobación de cables triples
Versiones pasadas: 1.2.1
(Necesito un mejor algoritmo claro: /)
fuente
([)*300
volver a[[[ and so on
?Lightfoot Plodder - EDITADO
Basado en el Plodder , este veloz gigante puede "avanzar rápidamente" a través de ceros consecutivos rápidamente hasta que alcanza algo distinto de cero (en ese momento comienza a avanzar como se esperaba).
Ahora mejorado con un algoritmo de descremado más robusto, que también permite el avance rápido a través de señuelos pequeños y señuelos más grandes propios.
Edición n. ° 2 : ahora puede volver al descremado si encuentra más focos de ceros.
fuente
Reacio Rán v2
La estrategia es fácil. Trate de hacer que el oponente piense que su bandera es un señuelo y preceda más allá del tablero y se suelte (una especie de cable / vibrador). Después de 10 rondas completas, se da por vencida e intenta determinar si el oponente está en su bandera y si no, hará -17 señuelos hasta que golpee una celda establecida. El método de limpieza que usa es un caso especial para [-12,12] y comienza a trabajar de manera similar a Loke.
Trivia: Rán es una diosa del mar de la mitología nórdica que lleva a los marineros antes de que mueran en el mar.
fuente
Mickey V4
Para V4 utilicé el mismo método que V3, contra los bots actualizados pero con más poblaciones concurrentes (30 no 10).
Desarrollado contra los 60 bots, incluidos
BurlyBalderV3
yLethalLoke
(pero excluyendo 2botsonecup que no es compatible con mi implementación estricta).Descubrí bots muy diferentes y tasas de éxito si comencé con diferentes semillas aleatorias. Así que decidí separar estos diferentes puntos de partida en poblaciones y dejar que ocasionalmente realizaran una polinización cruzada.
En 1400 generaciones, 30 poblaciones en evolución simultánea crearon este programa:
Calculo que la tasa de ganancia de este bot es del 90.0% con respecto al cultivo actual. (Longitudes de cinta 1135/125/0 ganadas / perdidas / extraídas).
Información V3
Tasa de ganancia calculada del 89,2% (1124/62/74 longitudes de cinta ganadas / perdidas / sorteadas).
Información V2
El programa de generación ahora tiene un análisis para determinar qué parte del final del programa no se usa y lo recorta antes de generar las próximas generaciones. Esto significa que las mutaciones aleatorias ocurren solo en partes usadas del programa y, por lo tanto, la evolución es más rápida.
72% contra la cosecha actual en el momento. (892/204/143 longitudes de cinta ganadas / perdidas / sorteadas).
Información V1
31500 generaciones, solo 12 bots enfrentados. 65% (165/80/7 longitudes de cinta ganadas / perdidas / sorteadas). Yo uso las 21 longitudes de cinta.
Los bots potenciales se clasifican por:
Trivialidades
The Naming of Cats is a difficult matter, It isn't just one of your brainfuck bots
fuente
Jugador
Esto está estrechamente relacionado con mi bot de Geronimo. Pero donde Geronimo está jugando una cosa segura, el jugador intenta ser más rápido haciendo lo que hace mejor: apostar: va a la celda 20 y comienza a cero desde allí.
Eso significa que podría perder fácilmente simplemente porque la arena no es tan grande. Pero si es así, podrían ser los pocos ciclos que cuentan.
Dato curioso: Realmente estaba considerando ingresar a un grupo de bots que parecen todos
(>)*X(>[-])*Y
dóndeX in 9..29
yY = 30 - X
. Pero creo que ingresar veinte bots sería un poco demasiado :) O incluso cuarenta si tuviera dos versiones, una con cero[+]
y otra que lo haga[-]
.fuente
Tonto
Un bot notablemente estúpido que solo se mete con el medio ambiente y espera que los bots con los que lucha se salgan de la cinta.
(No estoy seguro de si esto funciona, ¡aunque no se produce un error!)
Anotado (con lo que creo que hace):
(Seré escalonado si esto gana una sola batalla)
fuente
CropCircleBot
Este Bot utiliza algoritmos avanzados que fueron transmitidos por extraterrestres a través de círculos de cultivo que colocaron en la tierra. Cambiará a la humanidad y proporcionará enormes avances tecnológicos e incluso resolverá muchos problemas ambientales.
fuente
BeatYouMate
Y debido a que todos deberían publicar un bot que supere al primer bot que publiquen, aquí hay un bot de señuelo 5+:
fuente
CleverAndDetermined
Establece algunas trampas pequeñas, luego corre hacia el otro lado e intenta despejar todo, por encima o por debajo de cero. Falla en
----
.fuente
+++
¡antes[-]
es realmente inteligente evitar trampas simples!(
, ¿puedo tratarlo como un comentario?MetaJSRandomBot
La idea detrás de este bot es hacer algo totalmente aleatorio que todavía sea un código js válido sin demasiada inutilidad. Escribí el siguiente código ( enlace JSFiddle ) para generarlo. Veamos qué tan bien lo hace =)
fuente
Ruleta Prusiana
La Ruleta Rusa hizo una apuesta con su amigo Prusiano, y ahora es su turno de jugar.
fuente
Más grande
¡Comienza la carrera armamentista!
Ambos construyen y destruyen paredes de altura
1618, más grandes que la mayoría de los competidores. También tiene un poco de lógica para vencer al camuflaje, a los defensores de la bandera, a los antiaternadores y a los bots que asumen una bandera intactaVersión anotada
fuente
PacienteBot
Un bot en parte serio. este bot intentará ganar por el límite de 100000 ciclos. irá a la bandera enemiga mientras pone algunas trampas en el camino, disminuya un poco, regrese y defienda la bandera.
asumirá que todo lo que sea mayor que 1 o menor que -1 es la bandera, y cuando encuentre una, volverá. defiende simplemente incrementando constantemente. esto supone que la mayoría de los programas usarán [] para verificar si el indicador se convirtió en 0, por lo que (+) * 100000 será mucho más rápido
Editar: no puede hacer que funcione en el intérprete BF Joust. tiro la toalla. tal vez deberías decirme cómo mejorar mi código.
Editar: ahora el bot hace el lugar justo antes de la bandera 2, y después de disminuir un poco la bandera, busca un 2. Esto está destinado a cancelar el escenario en el que el bot encontraría una celda 0 distinta de la anterior a la bandera.
fuente
[<]
no es una buena idea, ya que se repite retrocediendo hasta que la celda debajo de su puntero es igual a cero , que es una de las celdas frente a su bandera o simplemente suicidio si su puntero llega a la bandera (ya que su bandera ojalá no sea cero ).