Игра «Пятнашки» · Шаг 1 из 5
Сдвинуть плитку
В пятнашках двигается не пустая клетка, а плитка: нажали «влево» — плитка справа от пустой клетки съезжает в неё. Если справа плитки нет — пустая клетка у края, — ничего не происходит.
Что сделать
Сдвиньте по стрелке соседнюю плитку в пустую клетку, а если такой плитки нет — оставьте поле как было.
Что приходит
pole— поле списком рядов,0— пустая клетка; менять его нельзяklavisha—"vverh","vniz","vlevo"или"vpravo"; бывает и другая строка
Что вернуть
Новое поле — список новых списков-рядов — после сдвига.
Допишите функцию sdvinut в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт sdvinut на каждое нажатие стрелки. Решите шаг — и плитки поедут по стрелкам; заодно шаг двигает плитки, когда пробел мешает лёгкую партию.
Без этого шага: стрелки не двигают плитки.
sdvinut([[1, 2, 3], [4, 0, 5], [7, 8, 6]], "vlevo")
[[1, 2, 3], [4, 5, 0], [7, 8, 6]]
Плитка двигается в пустую клетку по направлению стрелки:
"vverh"— плитка под пустой клеткой поднимается в неё;"vniz"— плитка над пустой опускается;"vlevo"— плитка справа от пустой съезжает влево;"vpravo"— плитка слева съезжает вправо.
Где была плитка, становится пусто (0). Если с нужной стороны плитки нет — пустая клетка у края, — поле не меняется. Любая другая строка вместо стрелки тоже ничего не меняет.
Поле бывает любого размера, не обязательно квадратное. Ответ — новый список новых рядов, даже когда ничего не сдвинулось: поле, которое пришло, оболочке ещё нужно, чтобы понять, был ли ход.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.