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 truelub yeslub 1lub 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 -
22222222nadal 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
22048moż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, goodale to nieprawda. Nie możesz się połączyć 2z, 2048a 4x4jeś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