Вдохновленный 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 (в игре нет 1)
- Хорошо: 000040000000 (нули - это пустые места)
Разные правила:
- Входные данные могут быть откуда угодно, например, STDIN, аргумент функции, файл и т. Д.
- Вывод также может быть где угодно, например, STDOUT, возвращаемое значение функции, файл и т. Д.
- Не обращайте внимания на размер сетки -
22222222
все равно выведите true. - Число не является максимальным для того, что может быть числом s, если оно является степенью двойки. Поэтому возможные числа - это любая степень двух, больше 0.
- Для тех, кто обеспокоен тем, что нули вызывают двусмысленность, это не так. Например,
22048
может быть проанализирован как[2] [2048]
или[2] [2] [0] [4] [8]
. Первый не работает, но второй работает, поэтому он должен вывести true. - Это код-гольф , поэтому выиграет самый короткий код в байтах!
22048
должен выводить, good
но это не так. Вы не можете комбинировать 2
с 2048
сеткой, 4x4
если все числа должны быть разделены, вы получите 5 ячеек. так, может быть, вы должны удалить 0
? Также ваш 5-й пример, кажется, недействительным, так как игра останавливается на 2048
:)
1