Ctrl K

Возможная позиция в крестиках-ноликах

Средняя
Доска для крестиков-ноликов 3×3 задана списком из трёх строк rows. Каждый символ — 'X', 'O' или пробел ' ' (пустая клетка). Правила игры: - игроки ходят по очереди и ставят свой знак в пустую клетку; - первым всегда ходит игрок с крестиками 'X', вторым — с ноликами 'O'; - игра заканчивается, как только три одинаковых знака заняли строку, столбец или диагональ, либо когда пустых клеток не осталось. После этого ходов больше нет. Верните True, если такую позицию можно получить в честной партии по этим правилам, и False иначе.
Пример 1
rows=['XX ', 'OO ', '   '] → True

Крестики сделали два хода, нолики — два, сейчас очередь крестиков. Позиция достижима.

Пример 2
rows=['OOO', 'XX ', 'XX '] → False

Нолики собрали строку, но крестиков на доске больше: после победы ноликов крестики уже не могли сходить.

Пример 3
rows=['  X', '   ', '  X'] → False

Два крестика и ни одного нолика: игроки ходят по очереди, так не бывает.

Ограничения
  • len(rows) == 3
  • len(rows[i]) == 3
  • rows[i][j] — 'X', 'O' или ' '
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСудоку без конфликтов СредняяПовернуть квадрат по часовой СредняяЧтение по спирали СредняяКвадрат, пронумерованный по спирали СредняяМаршруты тележки по складу Средняя
загружаем Python…
Вход
rows=['XX ', 'OO ', '   ']
Ожидается
True

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 93 теста на сервере, включая скрытые.