Ctrl K

Судоку без конфликтов

Средняя
Дано поле судоку 9×9 grid, заполненное частично: в каждой клетке стоит цифра от '1' до '9' или точка '.' — пустая клетка. Проверьте, нет ли на поле конфликтов среди уже вписанных цифр: - в каждой строке ни одна цифра не встречается дважды; - в каждом столбце ни одна цифра не встречается дважды; - в каждом из девяти квадратов 3×3, на которые делится поле, ни одна цифра не встречается дважды. Верните True, если все три правила выполнены, иначе False. Решать головоломку не нужно: поле без конфликтов может и не иметь решения — это не важно, проверяются только заполненные клетки.
Пример 1
grid=[['.', '.', '4', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '4', '.', '.', '.', '.', '.', '.']] → False

Две четвёрки стоят в одном столбце с индексом 2 — это нарушение.

Пример 2
grid=[['1', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '1']] → True

Две единицы стоят в разных строках, разных столбцах и разных квадратах 3×3 — конфликтов нет.

Пример 3
grid=[['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '7', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '7', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.']] → False

Семёрки в клетках (1, 1) и (2, 2) стоят в разных строках и столбцах, но в одном левом верхнем квадрате 3×3.

Ограничения
  • len(grid) == 9
  • len(grid[i]) == 9
  • grid[i][j] — цифра от '1' до '9' или '.'
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиНулевые кресты СредняяПроизведение разреженных матриц СредняяОдинокие тёмные пиксели СредняяТёмные пиксели в строках-близнецах СредняяВолшебные блоки 3×3 Средняя
загружаем Python…
Вход
grid=[['.', '.', '4', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '4', '.', '.', '.', '.', '.', '.']]
Ожидается
False

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