Menu
CoddyTech

Sudoku Solver

Поле судоку — это сетка 9 × 9, разделённая на девять квадратов 3 × 3. В решённом поле в каждой строке, каждом столбце и каждом квадрате каждая цифра от 1 до 9 встречается ровно один раз.

Головоломка представлена в виде 9 строк, по одной на каждую строку поля, начиная сверху; . обозначает пустую клетку. Заполните все пустые клетки и верните решённое поле в том же формате. У поля есть ровно одно решение.

Функция

solveSudoku(board: string-array) → string-array
boardstring-array
9 строк головоломки, точка в каждой пустой ячейке
Возвращаетstring-array
9 строк решённой доски

Ограничения

  • board содержит 9 строк длиной 9 символов.
  • Каждый символ — это . или одна из цифр от 1 до 9.
  • Заданные цифры никогда не повторяются в строке, столбце или блоке.
  • У этой доски ровно одно решение.

Примеры

Ввод
board = ["9.7.....6", "824.3....", "..1..9..2", ".9...2.18", "...4....5", "1325.8...", "...687...", "......8.9", ".4.9...5."]
Вывод
["957214386", "824736591", "361859742", "495372618", "786491235", "132568974", "519687423", "273145869", "648923157"]
Пояснение
В верхней строке 9.7.....6 уже стоят 9, 7 и 6, поэтому в шести пустых ячейках должны быть 1, 2, 3, 4, 5 и 8. Столбцы и блоки определяют, куда поставить каждую цифру, и строка становится такой: 957214386.
challenge icon

Дополнительный вопрос

В судоку-киллере суммы чисел в группах клеток должны совпадать с заданными. Как добавить это правило в поиск и использовать его, чтобы раньше отсекать ветви?

Сбросить код
def solveSudoku(board):
    # Напишите код здесь

Тест #1

Аргумент

board = ["9.7.....6", "824.3....", "..1..9..2", ".9...2.18", "...4....5", "1325.8...", "...687...", "......8.9", ".4.9...5."]

Ожидаемый вывод

["957214386", "824736591", "361859742", "495372618", "786491235", "132568974", "519687423", "273145869", "648923157"]