Inspiriert von xkcd .
Ihre Herausforderung besteht darin, festzustellen, ob eine Zahl im Spiel 2048 eine gute Kombination ergeben würde . Ihre Eingabe wird eine Zahl sein, wie zum Beispiel:
8224
Und die Ausgabe wird sein, ob diese Zahl eine gute 2048-Kombination ergeben würde, die für diese Eingabe true
oder yes
oder 1
oder irgendeine andere Art der Anzeige eines positiven Ergebnisses wäre.
Für diejenigen , die nicht mit dem Spiel vertraut, hier ist eine einfache Erklärung: Zweierpotenzen sind auf einem Gitter angeordnet sind , wie folgt aus : [2] [2]
. Kacheln können in jede Richtung bewegt werden. Wenn sich zwei identische Kacheln treffen, werden sie zur nächsten Potenz von zwei ( [2] [2]
wenn also nach links oder rechts bewegt wird [4]
). Oder Sie können das Spiel einfach hier ausprobieren .
Was bedeutet "eine gute 2048-Kombination"? Es bedeutet, dass jede Zahl, wenn sie im Spiel "2048" wäre, zu einer einzigen Zahl kombiniert werden könnte. (Eine Null bedeutet ein Leerzeichen und kann bei Bedarf ignoriert werden.) Beachten Sie, dass Zahlen möglicherweise mehrstellig sein können! Die Zahlen dürfen sich jedoch zwischen den Zügen nicht ändern. Hier sind einige Beispiele / Testfälle (wobei "Gut" eine gute Kombination anzeigt und "Schlecht" nicht gut bedeutet):
- Gut: 8224 (8224 -> 844 -> 88 -> 16)
- Gut: 2222 (2222 -> 44 -> 8)
- Gut: 22048 (22048 -> 448 -> 88 -> 16)
- Schlecht: 20482 (kann die äußeren 2en nicht kombinieren, noch kann man eine 2048 und eine 2 kombinieren)
- Gut: 20482048 (20482048 -> 4096)
- Bad: 210241024 (210241024 -> 22048, aber dies ist jetzt [2] [2048] und kann nicht kombiniert werden, da sich die Zahlen zwischen den Zügen nicht ändern können.)
- Gut: 2048 (es ist schon eine Nummer)
- Schlecht: 2047 (es ist keine Potenz von 2)
- Schlecht: 11 (es gibt keine 1en im Spiel)
- Gut: 000040000000 (Nullen sind Leerzeichen)
Verschiedene Regeln:
- Die Eingabe kann von einem beliebigen vernünftigen Ort aus erfolgen, z. B. STDIN, Funktionsargument, Datei usw.
- Die Ausgabe kann auch überall sinnvoll sein, z. B. STDOUT, Funktionsrückgabewert, Datei usw.
- Die Rastergröße ignorieren -
22222222
sollte immer noch true ausgeben. - Das ist kein Maximum für die Anzahl, solange es eine Zweierpotenz ist. Die möglichen Zahlen sind daher Zweierpotenzen größer als 0.
- Für diejenigen, die sich Sorgen machen, dass Nullen Mehrdeutigkeiten verursachen, ist dies nicht der Fall. Beispielsweise
22048
kann entweder[2] [2048]
oder analysiert werden[2] [2] [0] [4] [8]
. Der erste funktioniert nicht, aber der zweite, also sollte er true ausgeben. - Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
22048
sollte ausgeben, good
aber das ist nicht wahr. Sie kann nicht kombinieren 2
mit 2048
und das Gitter ist , 4x4
wenn alle Zahlen unterschiedlich sind , sollten Sie 5 Zellen erhalten werden. also vielleicht solltest du das entfernen 0
? Auch Ihr 5. Beispiel scheint ungültig zu sein, da das Spiel bei 2048
:)
1