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 A
atravé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 C
conterá o número da linha do condicional verdadeiro e, em seguida, essa linha será executada. No final de cada turno, C
será 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 seA
foi copiado para durante o último turno.A
deve 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.C
deve 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
This
retornará 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
A
e B
sã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 D
refere-se a um par diferente de quadrado e direção. E
produz um valor aleatório cada vez. D
e E
será 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ê:
Move
moverá você 1 quadrado adiante naD
direção th. Se houver um bot lá, você não se moverá.Copy(A,B)
copiará a variávelA
paraB
.B
não pode ser um valor numérico, exceto pelo nome de uma variável.A
eB
não pode ser de tipos diferentes. Copiar uma linha não copia a condição.Flag
faz 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 linhaL1
seC
for verdadeira, caso contrário, executaL2
.C
é uma condiçãoL1
eL2
deve 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 Start
será 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 If
nã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 X
quantidade quando visto por um oponente . A C
variável do oponente também será compensada pela mesma X
quantidade. X
não mudará dentro do mesmo jogo, mas mudará de jogo para jogo.