Ihre Aufgabe ist es, ein mathematisch perfektes Spiel von 2048 zu simulieren. Die Idee ist, die theoretische Obergrenze dafür zu finden, wie weit ein Spiel von 2048 gehen kann und wie Sie dorthin gelangen.
Um eine Vorstellung davon zu bekommen, wie dies aussieht, spielen Sie mit diesem 2x2-Klon und versuchen Sie, 68 Punkte zu erzielen. Wenn Sie dies tun, erhalten Sie eine 2, 4, 8 und 16 Kachel. Es ist unmöglich, diesen Punkt zu überschreiten.
Ihre Aufgabe wird erleichtert, da Sie genau wie bei diesem Klon auswählen können, wo Kacheln entstehen und welche Werte sie haben .
Sie müssen ein Programm oder eine Funktion schreiben, die eine 2048-Karte als Eingabe akzeptiert und die Karte mit der hervorgebrachten Kachel und der Karte nach dem Zusammenlegen der Kacheln ausgibt. Beispielsweise:
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
Ihr Programm wird wiederholt mit seiner eigenen Ausgabe gespeist, um ein ganzes Spiel von 2048 zu simulieren. Die erste Eingabe des Programms ist eine leere Tafel. Sie müssen ein Plättchen darauf erzeugen, anders als bei den beiden Plättchen des Originalspiels. Im letzten Schritt des Spiels können Sie sich nicht mehr bewegen, sodass Ihre beiden Ausgangskarten identisch sein können.
Sie müssen natürlich nur legale Züge ausgeben. Es können nur 2 oder 4 erzeugt werden. Sie müssen mindestens ein Plättchen bewegen oder reduzieren.
Ich habe die Eingabe- und Ausgabeanforderungen absichtlich vage gestellt. Sie können das Format der Ein- und Ausgabe frei wählen. Sie können Matrizen, Arrays, Strings oder was immer Sie wollen verwenden. Solange Sie mit ihnen ein 2048-Spiel simulieren können, sind Ihre Ein- und Ausgänge in Ordnung.
Der Gewinner ist derjenige, der das Spiel mit der höchsten Anzahl von Kacheln auf dem Brett und dann mit der niedrigsten Anzahl von Bytes im Quellcode beendet. Die Wertung aus dem ursprünglichen Spiel wird nicht berücksichtigt. (Hinweis: benutze 4er)