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

Игра «Крестики-нолики» · Шаг 3 из 5

Кто победил

После каждого хода оболочка спрашивает: собрал ли кто-нибудь линию? И какую — её клетки на поле загорятся.

Что сделать

Найдите на поле собранную линию — клетки, занятые одним знаком.

Что приходит

  • pole — поле 3×3: список рядов, в клетке «X», «O» или «.» — пусто

  • linii — все линии поля из шага 2: каждая — список клеток (ряд, столбец)

Что вернуть

Пару (знак, линия) для первой по списку линии из одного знака; такой нет — None.

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

В игре

Игра спрашивает pobeditel после каждого хода. Нашлась линия — партия окончена, а клетки линии подсвечиваются. Решите шаг — и игра заметит победу сразу, а не когда кончится место на поле.

Без этого шага: победителя никто не замечает — партия идёт, пока поле не заполнится.

Пример

На поле верхний ряд — «X X X», во втором ряду два «O». Первая по списку линия — верхний ряд, и она вся из «X». Функция возвращает ("X", [(0, 0), (0, 1), (0, 2)]).

L в проверке — готовый список восьми линий поля 3×3, ровно такой, какой строит второй шаг.

Тот же пример кодом
Перед вызовом
L = [[(0, 0), (0, 1), (0, 2)], [(1, 0), (1, 1), (1, 2)], [(2, 0), (2, 1), (2, 2)], [(0, 0), (1, 0), (2, 0)], [(0, 1), (1, 1), (2, 1)], [(0, 2), (1, 2), (2, 2)], [(0, 0), (1, 1), (2, 2)], [(0, 2), (1, 1), (2, 0)]]
Вызов
pobeditel([["X", "X", "X"], ["O", "O", "."], [".", ".", "."]], L)
Вернуть
('X', [(0, 0), (0, 1), (0, 2)])

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

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

Обсуждение

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

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