Inspirowany przez xkcd .
Wyzwanie polega na ustaleniu, czy liczba stanowi dobrą kombinację w grze 2048 . Twój wpis będzie liczbą, taką jak:
8224
A wyjście będzie to, czy ta liczba będzie zrobić dobry 2048 kombi, który dla tego wejścia byłby true
lub yes
lub 1
lub inny sposób wskazuje na pozytywny wynik.
Dla tych, którzy nie są zaznajomieni z gry, oto proste wyjaśnienie: potęgami dwójki są rozmieszczone na siatce, tak: [2] [2]
. Płytki można przesuwać w dowolnym kierunku, a jeśli spotykają się dwa identyczne kafelki, stają się one kolejną siłą dwóch (tak więc [2] [2]
po przesunięciu w lewo lub w prawo [4]
). Możesz też po prostu wypróbować grę tutaj .
Co oznacza „dobra kombinacja 2048”? Oznacza dowolną liczbę, która gdyby była w grze „2048”, mogłaby być połączona w jedną liczbę. (Zero oznacza puste miejsce i w razie potrzeby można je zignorować). Pamiętaj, że liczby mogą składać się z wielu cyfr! Jednak liczby nie mogą się zmieniać między ruchami. Oto kilka przykładów / przypadków testowych („Dobry” oznacza dobrą kombinację, a „Zły” oznacza niezadowalający):
- Dobry: 8224 (8224 -> 844 -> 88 -> 16)
- Dobry: 2222 (2222 -> 44 -> 8)
- Dobra: 22048 (22048 -> 448 -> 88 -> 16)
- Źle: 20482 (nie można łączyć zewnętrznych 2, ani nie można łączyć 2048 i 2)
- Dobry: 20482048 (20482048 -> 4096)
- Źle: 210241024 (210241024 -> 22048, ale teraz jest to [2] [2048] i nie można ich łączyć, ponieważ liczby nie mogą się zmieniać między ruchami)
- Dobrze: 2048 (to już jedna liczba)
- Źle: 2047 (to nie jest potęga 2)
- Źle: 11 (w grze nie ma 1)
- Dobrze: 000040000000 (zera to puste spacje)
Różne zasady:
- Dane wejściowe mogą być z dowolnego uzasadnionego miejsca, tj. STDIN, argument funkcji, plik itp.
- Dane wyjściowe mogą być również w dowolnym miejscu uzasadnionym, tj. STDOUT, wartość zwracana przez funkcję, plik itp.
- Zignoruj rozmiar siatki -
22222222
nadal powinien generować wartość true. - Nie jest to maksymalna liczba, która może być, o ile jest to potęga dwóch. Dlatego możliwymi liczbami są dowolne potęgi dwóch większe od 0.
- Dla tych, którzy martwią się zerami powodującymi niejednoznaczność, tak nie jest. Na przykład
22048
może być parsowany jako jeden[2] [2048]
lub[2] [2] [0] [4] [8]
. Pierwszy nie działa, ale drugi działa, więc powinien wypisać true. - To jest golf golfowy , więc wygra najkrótszy kod w bajtach!
22048
że dane wyjściowe powinny być generowane, good
ale to nieprawda. Nie możesz się połączyć 2
z, 2048
a 4x4
jeśli wszystkie liczby powinny być oddzielne, otrzymasz 5 komórek. więc może powinieneś usunąć 0
? Również twój 5 przykład wydaje się być nieprawidłowy, ponieważ gra zatrzymuje się o 2048
:)
1