Войти Создать аккаунт

Игра «Пятнашки» · Шаг 4 из 5

Перемешать ходами

Случайная раскладка — это часто сто ходов до сборки, а для разминки хочется попроще. Есть честный способ: взять собранное поле и сделать двадцать случайных ходов. Такая раскладка решаема наверняка — назад её ведут те же двадцать ходов. Только ход «туда-обратно» тратить нельзя: он ничего не мешает.

Что сделать

Выберите цепочку случайных ходов для перемешивания: каждый раз — из возможных стрелок, но не ту, что отменяет прошлый ход.

Что приходит

  • pole — поле списком рядов, 0 — пустая клетка; его не меняйте

  • hodov — сколько ходов выбрать

  • sluchay — генератор случайностей, как random.Random

Что вернуть

Список стрелок длиной hodov — по порядку, как их нажимать.

Допишите функцию sluchaynye_hody в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В игре

Игра зовёт sluchaynye_hody на пробел: двадцать ходов от собранного поля — лёгкая партия для разминки, а плитки по этим ходам двигает ваш шаг 1. Решите шаг — и пробел начнёт перемешивать.

Без этого шага: пробел не перемешивает лёгкую партию.

Пример

У собранной «восьмёрки» пустая клетка в правом нижнем углу: возможны только «вниз» и «вправо» — плитки сверху и слева. Генератор выбирает из ["vniz", "vpravo"], пустая клетка сдвигается, и выбор повторяется — уже без стрелки, которая вернула бы плитку назад.

Тот же пример кодом
Перед вызовом
import random
Вызов
sluchaynye_hody([[1, 2, 3], [4, 5, 6], [7, 8, 0]], 5, random.Random(7))
Вернуть
['vpravo', 'vniz', 'vlevo', 'vverh', 'vpravo']

Готовая игра →

Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.