Votre travail consiste à simuler un jeu mathématiquement parfait de 2048. L'idée est de trouver la limite supérieure théorique de jusqu'où un jeu 2048 peut aller, et de trouver comment y arriver.
Pour avoir une idée de ce à quoi cela ressemble, jouez avec ce clone 2x2 et essayez de marquer 68 points. Si vous le faites, vous vous retrouverez avec une tuile 2, 4, 8 et 16. Il est impossible d'avancer au-delà de ce point.
Votre tâche est facilitée car vous pouvez choisir où les tuiles apparaissent et quelles sont leurs valeurs, tout comme ce clone .
Vous devez écrire un programme ou une fonction qui accepte une carte 2048 en entrée et qui sort la carte avec la tuile générée et la carte après la réduction des tuiles. Par exemple:
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
Votre programme sera alimenté à plusieurs reprises sa propre sortie pour simuler un jeu entier de 2048. La première entrée du programme sera un plateau vide. Vous devez faire apparaître une tuile dessus, contrairement aux deux tuiles du jeu original. À la dernière étape du jeu, vous ne pourrez pas vous déplacer, vos deux cartes de sortie peuvent donc être identiques.
Vous devez bien sûr uniquement produire des mouvements légaux. Seul 2 ou 4 peuvent être générés, vous devez déplacer ou réduire au moins une tuile lors d'un mouvement, etc.
J'ai délibérément rendu les exigences d'entrée et de sortie vagues. Vous êtes libre de choisir le format de l'entrée et de la sortie. Vous pouvez utiliser des matrices, des tableaux, des chaînes ou tout ce que vous voulez. Tant que vous pouvez simuler un jeu 2048 avec eux, vos entrées et sorties sont correctes.
Le gagnant sera celui qui termine la partie avec le plus grand nombre de tuiles du plateau, puis le plus petit nombre d'octets dans le code source. Le score du jeu original ne sera pas pris en compte. (Astuce: utilisez 4)