Игра «Три в ряд» · Шаг 5 из 5
Есть ли ход
Иногда камни ложатся так, что ни один обмен не собирает линию, — и игра кончается, хотя ходы ещё остались. А когда ход есть, но его не видно, игрок жмёт пробел и просит подсказку. Обе вещи — один и тот же вопрос: найти хоть один годный обмен.
Что сделать
Найдите первый годный обмен на поле — для подсказки игроку и чтобы понять, есть ли ещё ход.
Что приходит
pole— список строкobmen— функцияobmen(pole, a, b): новое поле, если обмен соседейaиbсобирает линию, иначеNone
Что вернуть
Пару клеток (a, b) первого годного обмена; годных нет — None.
Допишите функцию podskazka в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт podskazka на пробел — и подсвечивает пару камней — и после каждого хода: None значит, что ходов нет и партия окончена. Решите шаг — и подсказка станет настоящей.
Без этого шага: подсказка всегда показывает левый верхний угол, и игра не замечает, что ходов не осталось.
Обмен в проверке — игрушка: годен, только если вторая клетка — (1, 1). На поле ["RG", "BY"] перебор идёт так: (0, 0) с правой и с нижней соседкой — нет, (0, 1) с нижней (1, 1) — да. Ответ ((0, 1), (1, 1)).
Клетки перебираются по строкам сверху вниз, в строке слева направо. Для каждой клетки a сначала пробуется соседка справа, потом соседка снизу — b; соседей за краем поля нет, их не пробовать.
Первая пара, на которой obmen(pole, a, b) вернул не None, — ответ (a, b). Проверено всё, и годных нет — None.
Образцовый тест целиком
obmen = lambda pole, a, b: pole if b == (1, 1) else None
podskazka(["RG", "BY"], obmen)
((0, 1), (1, 1))
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.