Автор оригинала: Pankaj Kumar.
Sudoku Solver в Python
Давайте построим Sudoku Solver в Python сегодня! Sudoku Puzzle – очень популярная головоломка, которая появляется в ежедневной газете, которая привлекает внимание многих людей. Существует много сложных, нерешенных проблем о головоломках судоку и их обобщения, что делает эту головоломку интересной, особенно для многих любителей математики.
Что такое головоломка судоку?
В головоломке судоку нам нужно заполнить каждую пустую коробку с целым числом от 1 до 9 таким образом, что каждый номер от 1 до 9 появляется один раз в каждой строке, каждый столбец и каждый из маленьких 3 на 3 ящики выделены с густыми границами.
Трудность этой головоломки может варьироваться. Чем больше уровень сложности головоломки судоку, тем более сложным исследовательской проблемой он становится для вычислительных ученых. Сложные головоломки в основном имеют менее прописанные символы.
Пазлы судоку, которые публикуются для развлечений, имеют уникальные решения. Считается, что головоломка Судоку считается хорошо сформированной, если у него есть уникальное решение. Еще одна сложная проблема исследований состоит в том, чтобы определить, насколько нельзя заполнить немногие коробки для головоломки судоку. Хорошо сформированная судоку с 17 символами существуют. Неизвестно, существует ли или нет хорошо сформированной головоломки только с 16 подсказками.
Шаги для решения головоломки судоку в Python
- В этом методе решения головоломки судоку сначала мы назначаем размер 2D-матрицы для переменной M (м * м).
- Затем мы назначаем утилитую функцию (головоломку) для печати сетки.
- Позже он назначит номер к строке и Col.
- Если мы найдем тот же номер в том же строке или той же колонке или в определенной матрице 3 * 3, «False» будет возвращена.
- Затем мы проверим, достигли ли мы 8-го ряд и 9-й столбец и вернемся к остановке дальнейшего возврата.
- Далее мы проверим, будет ли значение столбца 9, затем переходим к следующей строке и столбце.
- Далее теперь мы видим, если текущая позиция сетки имеет значение больше 0, то мы итерации для следующего столбца.
- После проверки, если это безопасное место, мы переходим к следующему столбцу, а затем назначить NUM в текущей (строке, COL) положении сетки. Позже мы проверяем следующую возможность с следующей столбцом.
- Поскольку наше предположение не было ошибочно, мы отказываемся от назначенного Num, а затем перейдем к следующему предположению с разным значением Num
Реализация Sudoku Solver в Python
Мы будем использовать метод Backtracking для создания нашего Sudoku Solver в Python. BackTracking означает переключение обратно на предыдущий шаг, как только мы определим, что наше текущее решение не может быть продолжено в полной. Мы используем этот принцип Backtracking для реализации алгоритма судоку.
M = 9 def puzzle(a): for i in range(M): for j in range(M): print(a[i][j],end = " ") print() def solve(grid, row, col, num): for x in range(9): if grid[row][x] == num: return False for x in range(9): if grid[x][col] == num: return False startRow = row - row % 3 startCol = col - col % 3 for i in range(3): for j in range(3): if grid[i + startRow][j + startCol] == num: return False return True def Suduko(grid, row, col): if (row == M - 1 and col == M): return True if col == M: row += 1 col = 0 if grid[row][col] > 0: return Suduko(grid, row, col + 1) for num in range(1, M + 1, 1): if solve(grid, row, col, num): grid[row][col] = num if Suduko(grid, row, col + 1): return True grid[row][col] = 0 return False '''0 means the cells where no value is assigned''' grid = [[2, 5, 0, 0, 3, 0, 9, 0, 1], [0, 1, 0, 0, 0, 4, 0, 0, 0], [4, 0, 7, 0, 0, 0, 2, 0, 8], [0, 0, 5, 2, 0, 0, 0, 0, 0], [0, 0, 0, 0, 9, 8, 1, 0, 0], [0, 4, 0, 0, 0, 3, 0, 0, 0], [0, 0, 0, 3, 6, 0, 0, 7, 2], [0, 7, 0, 0, 0, 0, 0, 0, 3], [9, 0, 3, 0, 0, 0, 6, 0, 4]] if (Suduko(grid, 0, 0)): puzzle(grid) else: print("Solution does not exist:(")
Выход:
====================== RESTART: C:/Users/SIDDHI/sudoku.py =========== 2 5 8 7 3 6 9 4 1 6 1 9 8 2 4 3 5 7 4 3 7 9 1 5 2 6 8 3 9 5 2 7 1 4 8 6 7 6 2 4 9 8 1 3 5 8 4 1 6 5 3 7 2 9 1 8 4 3 6 9 5 7 2 5 7 6 1 4 2 8 9 3 9 2 3 5 8 7 6 1 4
Заключение
И это это для построения решателя судоку в Python! Я надеюсь, что вы весело прочитали статью и узнали, как мы реализовали код.
Psst … Также есть проще построить Sudoku Solver в Python!
Вы можете импортировать судоку PY-Sudoku.pypi Модуль из https://pypi.org/project/py-sudoku/ Отказ Это простая программа Python, которая генерирует и решает M X N головоломки судоку.
Довольно круто, не так ли? Теперь пришло время играть с головоломками судоку!