Игра «2048» · Шаг 1 из 5
Сжать ряд
Вся «2048» держится на одном движении: ряд плиток сдвигается влево, пустые клетки уходят вправо, а две одинаковые плитки, оказавшиеся рядом, сливаются в одну вдвое больше. Хитрость в том, что плитка, получившаяся слиянием, за этот же ход второй раз не сливается.
Что сделать
Сдвиньте ряд плиток влево по правилам 2048 — с одним слиянием на плитку за ход.
Что приходит
ryad— ряд поля, список целых:0— пусто, остальное — плитки
Что вернуть
Пару (новый ряд той же длины, очки): плитки прижаты влево, одинаковые соседние слились, очки — сумма получившихся слиянием; [4, 4, 8, 0] — ([8, 8, 0, 0], 8).
Допишите функцию szhat_ryad в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Через szhat_ryad идёт каждый ход: третий шаг сжимает ею все ряды поля, а очки прибавляются к счёту. Решите шаг — и одинаковые плитки начнут сливаться.
Без этого шага: плитки сдвигаются, но не сливаются.
[2, 2, 2, 2]: первая пара двоек сливается в 4, вторая — тоже в 4, а получившиеся четвёрки за этот ход больше не сливаются. Ответ — ([4, 4, 0, 0], 8).
szhat_ryad([2, 2, 2, 2])
([4, 4, 0, 0], 8)
Функция принимает ряд — список целых: 0 — пусто, остальное — плитки. Возвращает пару: новый ряд той же длины и очки за ход.
- Плитки сдвигаются влево, пустые клетки — вправо.
- Идя слева направо, две подряд одинаковые плитки сливаются в одну с суммой; очки — сумма всех получившихся слиянием плиток.
- Плитка, получившаяся слиянием, в этот ход больше не сливается:
[4, 4, 8, 0]даёт[8, 8, 0, 0], а не[16, 0, 0, 0].
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.