Bem-vindo ao Code Bots 2!
Você aprendeu sua lição desde os últimos Code Bots. Você tentou descobrir mais maneiras de ajustar mais ações em menos linhas e agora finalmente consegue. Você fará um Code Bot orientado a eventos.
Seu bot deve consistir em 24 linhas. Cada linha segue um dos dois formatos:
Condition:Action
ou
Action
Seu bot também têm de armazenamento suficiente para armazenar 5 números inteiros nomeados Aatravés E. Um número inteiro pode armazenar valores de 0 a 23.
A cada turno, você executará a linha C, a menos que uma das condições seja verdadeira. Se sim, então Cconterá o número da linha do condicional verdadeiro e, em seguida, essa linha será executada. No final de cada turno, Cserá incrementado.
Existem as condições disponíveis:
Starté verdade apenas no primeiro turno. Você deve ter isso em seu código exatamente uma vezBotAt(N)é verdadeiro se houver um bot no local definido por NEquals(A,B)é verdadeiro se A for igual a B. Eles podem ser tipos diferentes; nesse caso, eles não serão iguais.Modified(A)é verdadeiro seAfoi copiado para durante o último turno.Adeve ser um nome de variável, uma linha ou uma condiçãoAny(C1,C2,...)é verdadeiro se alguma das condições for verdadeiraNone(C1,C2,...)é verdadeiro se nenhuma das condições for verdadeiraAll(C1,C2,...)é verdadeiro se todas as condições forem verdadeirasNot(C)é verdadeiro se C for falso.Cdeve ser uma condição.
As variáveis podem estar em um dos seguintes formatos. Os 9 primeiros são numéricos e podem ser usados sempre que N for usado nesta página.
A,B,C,D,E- Um número de 0 a 23
Thisretornará o número da linha em que está atualmenteAdd(N1,N2,...)retornará a soma de todos os valoresSub(N1,N2)retornará N1 menos N2Mult(N1,N2,...)retornará o produto de todos os valoresDiv(N1,N2)retornará N1 dividido por N2Mod(N1,N2)retornará N1 mod N2OVar(N)aceitará um nome de variável e retornará a variável do oponenteLine(N)retornará a enésima linha no seu códigoType(N)retornará o tipo de enésima linha no seu código (os tipos são os nomes das ações)Cond(N)retornará a condição na linha NésimaCondType(N)retornará o tipo de condição na enésima linha (os tipos são os nomes das condições)OLine(N)retornará a enésima linha no código do seu oponenteOType(N)retornará o tipo de enésima linha no código do seu oponenteOCond(N)retornará a condição na enésima linhaOCondType(N)retornará o tipo de condição na enésima linha
Ae Bsão para seu uso pessoal, Cé usado para determinar qual linha executar no seu código e Dé usado como uma direção. Cada valor de Drefere-se a um par diferente de quadrado e direção. Eproduz um valor aleatório cada vez. De Eserá inicializado com um valor aleatório, caso contrário 0.
A direção usada será [North,East,South,West][D%4]. Seu oponente é o bot na praça imediata nessa direção.
Existem 4 ações disponíveis para você:
Movemoverá você 1 quadrado adiante naDdireção th. Se houver um bot lá, você não se moverá.Copy(A,B)copiará a variávelAparaB.Bnão pode ser um valor numérico, exceto pelo nome de uma variável.AeBnão pode ser de tipos diferentes. Copiar uma linha não copia a condição.Flagfaz nada. O bot com mais sinalizadores no seu código terá um ponto. O bot com mais pontos ganha.If(C,L1,L2)executará a linhaL1seCfor verdadeira, caso contrário, executaL2.Cé uma condiçãoL1eL2deve ser linhas.
A grande imagem
50 cópias de cada bot serão colocadas no mundo. Seu objetivo é colocar sua bandeira no maior número possível de bots. Para cada bot que possui mais do seu tipo de bandeira do que qualquer outro tipo de bandeira, você recebe um ponto.
Os bots serão colocados da seguinte maneira:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
Serão 10 jogos disputados e a média de pontos será calculada em todos os jogos, determinando quem é o vencedor.
Notas laterais
Se várias condições se aplicarem, a que se seguir mais imediatamente Startserá executada
Os bots serão embalados de perto, mas você não começará outro vizinho. (Tecnicamente, ele terá o mesmo formato dos últimos CodeBots)
Como esse desafio não foi publicado na sandbox (para não dar vantagem a ninguém), reservo-me o direito de alterar pequenos detalhes por imparcialidade ou recursos adicionais. Além disso, se houver um bug no runner do CodeBots, eu o alterarei, mesmo que um bot dependa desse bug para obter sucesso. Estou tentando ser o mais justo possível.
Instruções recursivas Ifnão serão executadas
Se o seu bot for menor que 24 linhas, as linhas restantes serão preenchidas com Flag
Lembre-se de que ao copiar para si mesmo C, isso Cé incrementado no final do seu turno.
O interpretador do CodeBots pode ser encontrado aqui . Inclui um arquivo .jar para facilitar a execução. Basta adicionar seu bot à pasta de bots
Pontuações
- 893,9 Borg
- 1.3 LazyLioness
- 0,9 Defensor
- 0.5 Flagger
- 0.4 CliqueBot
- 0.4 Insidioso
- 0.3 Atacante
- 0.3 Gard
- 0.3 SingleTarget
- 0.2 FreezeBot
- 0.2 Sentinel
- 0.2 Driveby
- 0.0 AntiInsidious
- 0.0 MoveBot
- 0.0 CliqueBorg
- 0.0 Calculadora
- 0.0 TestBot
- 0.0 Imitador
ATUALIZAR
As linhas de código agora são giradas quando você visualiza o código do seu oponente. Isso significa que a linha 1 do seu oponente pode ser a linha 14 (ou qualquer que seja a linha). Um bot terá um deslocamento fixo que compensará suas linhas pela Xquantidade quando visto por um oponente . A Cvariável do oponente também será compensada pela mesma Xquantidade. Xnão mudará dentro do mesmo jogo, mas mudará de jogo para jogo.