Натхненний xkcd .
Ваше завдання полягає в тому, щоб визначити, чи вдало б число поєднати в грі 2048 . Вашим вкладом буде число, наприклад:
8224
І вихід буде це число зробити хорошу 2048 комбо, який для цього входу буде true
або yes
або 1
або будь-яким іншим способом вказівки позитивного результату.
Для тих , хто не знайомий з грою, ось просте пояснення: повноваження двох розташовані на сітці, як це: [2] [2]
. Плитку можна переміщувати в будь-якому напрямку, і якщо зустрічаються дві однакові плитки, вони стають наступною силою двох (так, [2] [2]
коли рухається ліворуч або праворуч стає [4]
). Або ви можете просто спробувати гру тут .
Що означає "хороша комбінація 2048 року"? Це означає будь-яке число, яке, якби воно було в грі «2048», його можна було б об'єднати в одне єдине число. (Нуль означає порожній простір , і при необхідності його можна ігнорувати.) Зверніть увагу, що цифри, можливо, можуть бути багатозначними! Однак числа не повинні змінюватися між ходами. Ось кілька прикладів / тестових випадків ("Добре" вказує на хорошу комбінацію, а "Погано" означає недобре):
- Добре: 8224 (8224 -> 844 -> 88 -> 16)
- Добре: 2222 (2222 -> 44 -> 8)
- Добре: 22048 (22048 -> 448 -> 88 -> 16)
- Погано: 20482 (не можна комбінувати зовнішні 2-х, також не можна поєднувати 2048 та 2)
- Добре: 20482048 (20482048 -> 4096)
- Погано: 210241024 (210241024 -> 22048, але це зараз [2] [2048] і не може бути поєднано, оскільки числа не можуть змінюватися між ходами)
- Добре: 2048 (це вже одне число)
- Погано: 2047 (це не сила 2)
- Погано: 11 (у грі немає жодної)
- Добре: 000040000000 (нулі - порожні пробіли)
Різні правила:
- Введення даних може бути з будь-якого розумного, наприклад, STDIN, аргументу функції, файлу тощо.
- Вихід також може бути де завгодно розумним, тобто STDOUT, значення повернення функції, файл тощо.
- Ігноруйте розмір сітки -
22222222
все одно слід виводити правдою. - Максимальне значення не може бути числом, доки це сила двох. Тому можливі числа - будь-яка потужність на дві більше 0.
- Для тих, хто переживає нулі, що викликають неоднозначність, це не так. Наприклад,
22048
можна розібрати як[2] [2048]
або[2] [2] [0] [4] [8]
. Перший не працює, але другий, так що він повинен виводити істину. - Це код-гольф , тому найкоротший код у байтах виграє!
22048
слід виводити, good
але це неправда. Ви не можете комбінувати 2
з 2048
і сітками , 4x4
якщо всі номери повинні бути індивідуальними ви отримаєте 5 клітин. так що, можливо, вам слід видалити 0
? Також ваш 5-й приклад здається недійсним, оскільки гра зупиняється на 2048
:)
1