EDIT: Recentemente, minha pergunta foi proposta como uma duplicata do 2048 Bot Challenge . Eu gostaria de enfatizar que esta pergunta é diferente da pergunta e exigirá que as respostas sejam pensadas de maneira diferente da pergunta. O 2048 Bot Challenge pediu ao usuário que criasse um bot, que seria executado por uma hora, com a maior pontuação sendo a pontuação do usuário. Além disso, tinha um limite de 555 bytes. Meu desafio executa o código com muito menos frequência, apenas 3 vezes. Sua pontuação é calculada usando a pontuação média dessas três vezes e dividindo pelo comprimento do caractere do seu código de golfe. Minha pergunta incentiva as entradas a serem "mais inteligentes" e não tentar obter a pontuação mais alta por força bruta.
-
EDIT: O método get foi alterado para getTile, para evitar conflitos com a palavra-chave JS get. Além disso, uma seção de pontuação alta foi adicionada.
Recentemente, criei um site que permite que o popular jogo 2048 seja controlado usando JavaScript. Meu site está vinculado aqui:
Quão:
Um Ace Editor está localizado acima do quadro. Você coloca um código nele, que é executado uma vez a cada 250 ms ou 4 vezes por segundo. Isso é chamado de ciclo.
Use os seguintes métodos para controlar o quadro. Você não pode usar as teclas de seta.
up(); //move up
down(); //move down
left(); //move left
right(); //move right
move(integer); //integer is a direction. 0:up,1:right,2:down,3:left
getTile(y,x); //gets the value of the tile in position y,x on the board. See diagram
As seguintes variáveis são definidas para sua conveniência:
eother //boolean, alternates every cycle
frozen //integer, counts how many cycles the board has remained stationary
lastDir //integer, indicates the last direction that was tried to move in
//uses same format as the move method above.
startup //boolean, will always be true when the game first starts
//you can change it as you wish
a
b //a b and c are all persistant variables, they do not change each cycle
c //any other variables defined in the cycle will be reset every time
Regras:
- Sem aleatoriedade, você deve usar a lógica. (Sim, eu sei que o código de exemplo usa aleatoriamente.)
- Não há conexão com as funções do jogo ou trapaça de outras maneiras
- Geralmente, tente chamar apenas um método de movimentação por ciclo. Tudo bem se você usar mais, mas estraga a animação
- O tabuleiro deve começar em um estado aleatório, sem modificação do estado pré-jogo
- Você deve fornecer a versão descompactada e golfada do código em sua postagem.
- Você deve fornecer um link para o site que já carrega a versão não compactada do seu código, veiculada via PasteBin (por exemplo, ... thatcoolidea.com/2048?i=pH18GWtu carrega o código de exemplo.)
Pontuação:
- Seu código será pontuado por mim.
- A parte A da sua pontuação é uma média de 3 execuções do código, arredondadas para baixo.
- A parte B da sua pontuação é o comprimento do caractere do seu código de golfe.
- Sua pontuação final é a parte A dividida pela parte B
O vencedor terá seu código imortalizado como o código de exemplo no site, se desejar, e reconhecido em um comentário no código.
Boa sorte! Espero que você goste do desafio.
Pontuação máxima atual 225.22 - Freezer - user3217109