Ctrl K

Слово в ячейку кроссворда

Средняя
Дано поле кроссворда board размером m × n. В каждой клетке — пробел ' ' (пустая клетка), '#' (закрашенная клетка) или строчная латинская буква (часть уже вписанного слова). Слово word можно вписать по горизонтали (слева направо или справа налево) или по вертикали (сверху вниз или снизу вверх), если: - оно не занимает ни одной клетки '#'; - каждая его буква попадает либо в пустую клетку, либо в клетку с той же самой буквой; - сразу перед первой и сразу после последней буквы (по направлению слова) стоит '#' или край поля — то есть слово занимает ячейку целиком. Верните true, если word можно вписать, и false иначе.
Пример 1
board=[["#", " ", " "], ["#", "o", "#"], [" ", "g", " "]], word="dog" → True

Средний столбец свободен сверху донизу: «d» встаёт в пустую клетку, «o» и «g» совпадают с уже вписанными буквами.

Пример 2
board=[[" ", " ", " "], ["#", "#", "#"]], word="go" → False

Единственная горизонтальная ячейка — вся верхняя строка длиной 3, а слово длиной 2: рядом со словом останется пустая клетка. Столбцы же обрываются на «#» после одной клетки.

Пример 3
board=[["t", " ", "#"], ["#", "#", "#"]], word="at" → True

Слово можно читать справа налево: «a» в пустую клетку, «t» совпадает с уже стоящей буквой.

Ограничения
  • 1 ≤ m · n ≤ 2 · 10⁵
  • Каждая клетка — ' ', '#' или строчная латинская буква
  • 1 ≤ len(word) ≤ max(m, n)
  • word состоит из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиХод с захватом линии СредняяСтолбцы, закрывающие строки СредняяПростые числа на лучах сетки СредняяОдноцветный квадрат за одну перекраску ЛёгкаяТри прямоугольника на все единицы Сложная
загружаем Python…
Вход
board=[["#", " ", " "], ["#", "o", "#"], [" ", "g", " "]], word="dog"
Ожидается
True

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