Игра «Сапёр» · Шаг 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)]
Функция принимает размер поля (рядов, столбцов), сколько мин нужно, список запретных клеток и генератор случайностей sluchay (как random.Random). Кандидаты — все клетки поля, кроме запретных, по рядам сверху вниз, в ряду слева направо. Мины — sluchay.sample(кандидаты, сколько); если кандидатов меньше, чем мин, — все кандидаты. Возвращает список клеток с минами, упорядоченный по рядам и столбцам.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.