Ctrl K

Ход с захватом линии

Средняя
Дана доска board 8×8 для игры двумя цветами. Клетка board[r][c] — это '.' (пусто), 'W' (белая фишка) или 'B' (чёрная фишка). Игрок цвета color хочет поставить фишку в пустую клетку (row, col). Ход разрешён, только если после него эта клетка станет концом *захватывающей линии* — по горизонтали, вертикали или диагонали. Захватывающая линия — это не менее трёх подряд идущих клеток, у которых оба конца цвета color, а все клетки между ними (хотя бы одна) — противоположного цвета. Пустых клеток в линии быть не может. Верните True, если ход разрешён, и False иначе.
Пример 1
board=[['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', 'W', 'B', '.', '.', '.'], ['.', '.', '.', 'B', 'W', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.']], row=2, col=3, color='B' → True

Вниз от (2, 3): белая (3, 3), затем чёрная (4, 3) — линия Ч-Б-Ч, ход разрешён.

Пример 2
board=[['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', 'W', 'B', '.', '.', '.'], ['.', '.', '.', 'B', 'W', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.']], row=2, col=3, color='W' → False

Рядом с (2, 3) из чужих фишек только чёрная (3, 4), но за ней по диагонали пустая клетка — замкнуть линию нечем.

Ограничения
  • Доска ровно 8×8, клетки — '.', 'W' или 'B'
  • 0 ≤ row, col < 8
  • board[row][col] == '.'
  • color — 'B' или 'W'
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСлово в ячейку кроссворда СредняяСтолбцы, закрывающие строки СредняяПростые числа на лучах сетки СредняяОдноцветный квадрат за одну перекраску ЛёгкаяТри прямоугольника на все единицы Сложная
загружаем Python…
Вход
board=[['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', 'W', 'B', '.', '.', '.'], ['.', '.', '.', 'B', 'W', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.']], row=2, col=3, color='B'
Ожидается
True

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