Todos os bots na arena de batalha foram repentinamente fodidos e ninguém pode explicar o porquê. Mas quem se importa desde que ainda seja capaz de lutar - embora Brainfuck seja a única língua que eles entendem mais.
Já faz um tempo desde a última submissão, então finalmente vou anunciar o vencedor de BrainFuckedBotsForBattling: Parabéns a LymiaAluysia por vencer com NyurokiMagicalFantasy!
Placar
| 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 |
Pontuações finais de 09.10.2014
EDIT6 : Logs descartados devido ao tamanho e tempo de execução extremos. Você pode gerá-los você mesmo, descomentando as linhas RunThisTournament.py
.
EDIT5 : Implementado tratamento de abreviação no controlador, sem grandes tempos de execução. Isso tem o efeito colateral de que números e parênteses não são mais tratados como comentários. Você ainda pode usá-los se desejar fornecer uma versão anotada, mas seria muito útil se também houvesse uma versão não comentada do seu código , portanto, não preciso remover os comentários manualmente. Obrigado!
EDIT4 : O título foi alterado porque o torneio foi removido das perguntas da rede quente. Obrigado a @ GeeBits por apontar isso!
EDIT3 : Comentários removidos em programas bf, devido a um resultado inesperado, devem ser corrigidos agora. Se alguém tiver algum problema com a remoção de seus comentários, informe.
EDIT2 : Como causou um tempo de execução arcano no meu computador muito lento, reduzi o limite de tempo limite de 100000 ciclos para 10000 ciclos. Não que alguém tenha desviado o resultado de um jogo de corrida além desse ponto.
EDIT1 : Corrigido um erro no script de conversão, fazendo com que o intérprete não ignorasse os números nos programas comentados.
Descrição
Este é um torneio Brainfuck inspirado em BF Joust . Dois bots (programas Brainfuck) estão lutando entre si em uma arena representada por uma fita de memória. Cada célula pode conter valores de -127 a 128 e quebrar em seus limites (então 128 + 1 = -127).
Instruções válidas são semelhantes às do Brainfuck comum, o 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
A arena tem um tamanho de 10 a 30 células, que é pseudo-aleatoriamente escolhida a cada batalha. Nas duas extremidades, há um 'sinalizador' localizado com um valor inicial de 128, enquanto todas as outras células são zeradas. O objetivo do seu bot é zerar a bandeira do inimigo por 2 ciclos consecutivos antes que ele zere sua própria bandeira.
Cada bot começa com sua própria bandeira, que é a célula [0] de sua própria perspectiva. O oponente está localizado no outro lado da fita.
[ 128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 128 ]
^ ^
my bot other bot
Ambos os bots executam suas ações simultaneamente, isso é considerado um ciclo. O jogo termina após 10000 ciclos ou assim que uma das condições vencedoras é atingida. Se um dos programas chegar ao fim, ele simplesmente pára de fazer qualquer coisa até o final do jogo, mas ainda pode vencer.
Condições vencedoras
Seu bot vence em uma das seguintes condições:
- A bandeira do seu inimigo é zerada antes da sua
- Seu inimigo move o ponteiro para fora da fita (é executado
>
em sua bandeira ou<
por conta própria) - O valor da sua bandeira está mais longe de 0 do que o valor da bandeira do seu oponente após 10000 ciclos
Regras
Sua postagem deve conter um nome para seu bot e seu código.
- Você pode usar a seguinte sintaxe de abreviação para tornar seu código mais legível:
- por exemplo,
(+)*4
é o mesmo que++++
, isso é válido para qualquer instrução, exceto parênteses sem parênteses entre parênteses, pois a lógica do loop colide com a lógica de abreviação. Por favor use em[-[-[-
vez de([-)*3
- por exemplo,
- Qualquer outro caractere que não
+-><[].
seja um comentário e, portanto, ignorado, exceto as()*
abreviações
Bots que não seguirem as regras serão excluídos do torneio.
- Somente o Brainfuck básico é permitido, nenhuma outra variante que suporte procedimentos ou operações aritméticas
- O código-fonte do seu bot não deve conter colchetes incomparáveis
Você pode se informar sobre estratégias básicas, mas não use o código de outra pessoa para o seu próprio bot.
Pontuação
A pontuação de um bot é determinada pelo número de vitórias contra todos os outros bots. Um encontro entre 2 bots consiste em 10 partidas com diferentes comprimentos de fita de memória, o que resulta em uma pontuação máxima de 10 pontos por encontro. Um empate não resulta em pontos para esta partida.
Programa de controle
Você pode encontrar o programa de controle no github, junto com os registros completos das batalhas. A tabela de classificação será postada aqui assim que for gerada.
Sinta-se livre para clonar o repositório e experimentar seu bot contra os outros por conta própria. Use python Arena.py yourbot.bf otherbot.bf
para executar uma partida. Você pode modificar as condições com os sinalizadores de linha de comando -m
e -t
. Se o seu terminal não suportar seqüências de escape ANSI, use o --no-color
sinalizador para desativar a saída colorida.
Bots de exemplo
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
O DecoyBot vence todas as partidas com um comprimento de fita superior a dez, pois o FastClearBot pode evitar os pequenos chamarizes, mas não os maiores. A única situação em que o FastClearBot pode vencer o DecoyBot é quando é rápido o suficiente para alcançar a bandeira do inimigo antes que seu oponente construa grandes chamarizes.