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

Игра «Сапёр» · Шаг 2 из 5

Расставить мины

Мины прячутся случайно — но не там, куда человек щёлкнул первым, и не вокруг: первый щелчок в сапёре всегда открывает хоть что-то. Случайность приходит аргументом, чтобы партию можно было повторить.

Что сделать

Спрячьте мины — но не под первым щелчком и не рядом с ним.

Что приходит

  • vysota и shirina — размер поля

  • skolko — сколько мин

  • zapret — клетки, где мин быть не должно

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

Что вернуть

Клетки с минами по рядам и столбцам: sluchay.sample из всех незапретных клеток по рядам; кандидатов меньше мин — все.

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

В игре

Игра зовёт rasstavit_miny при первом щелчке и запрещает ей клетку щелчка и её соседей — поэтому первый щелчок всегда открывает пустое место. Решите шаг — и мины будут прятаться в разных местах.

Без этого шага: мины не случайные — с левого верхнего угла, по порядку.

Пример

Поле 3×3, нужно 2 мины, середина (1, 1) запрещена. Кандидаты — восемь клеток по краю. Генератор с затравкой 7 выбирает из них две, и функция возвращает их по порядку: [(0, 1), (2, 0)].

Тот же пример кодом
Перед вызовом
import random
sl = random.Random(7)
Вызов
rasstavit_miny(3, 3, 2, [(1, 1)], sl)
Вернуть
[(0, 1), (2, 0)]

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

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

Обсуждение

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

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