Seu trabalho é simular um jogo matematicamente perfeito de 2048. A idéia é encontrar o limite superior teórico de quão longe um jogo de 2048 pode ir e descobrir como chegar lá.
Para ter uma idéia de como isso é, brinque com esse clone 2x2 e tente marcar 68 pontos. Se fizer isso, você terminará com um bloco de 2, 4, 8 e 16. É impossível avançar além desse ponto.
Sua tarefa é facilitada porque você pode escolher onde os blocos aparecerão e quais serão seus valores, assim como este clone .
Você deve escrever um programa ou função que aceite uma placa 2048 como entrada e produza a placa com o bloco gerado e o painel após o recolhimento dos blocos. Por exemplo:
Input:
-------
0 0 0 0
0 0 0 0
0 0 0 0
0 0 8 8
Output:
-------
0 0 0 0
0 0 0 0
0 0 0 0
0 4 8 8
0 0 0 0
0 0 0 0
0 0 0 0
0 0 4 16
Seu programa receberá repetidamente sua própria saída para simular um jogo inteiro de 2048. A primeira entrada do programa será um tabuleiro vazio. Você deve gerar uma peça sobre ela, diferente das duas peças do jogo original. Na última etapa do jogo, você não poderá se mover, portanto suas duas placas de saída podem ser idênticas.
Obviamente, você deve produzir apenas movimentos legais. Apenas um 2 ou 4 pode ser gerado, você deve mover ou recolher pelo menos um bloco em um movimento, etc.
Eu propositadamente tornei os requisitos de entrada e saída vagos. Você é livre para escolher o formato da entrada e saída. Você pode usar matrizes, matrizes, strings ou o que quiser. Contanto que você possa simular um jogo de 2048 com eles, suas entradas e saídas são boas.
O vencedor será aquele que terminar o jogo com a maior soma de peças no tabuleiro e, em seguida, com o menor número de bytes no código-fonte. A pontuação do jogo original não será levada em consideração. (Dica: use 4)