I started working on a sudoku solver using backtracking and recursion. I am unable to print the solved Sudoku. I have tested the possible(y,x,n)
method and it works. The program finishes with Process finished with exit code 0
but without printing out the solved sudoku puzzle. I'm using python 3.7 with PyCharm Community Edition 2020.1.3 as my IDE.
import numpy as np
grid = [[5, 3, 0, 0, 7, 0, 0, 0, 0],
[6, 0, 0, 1, 5, 9, 0, 0, 0],
[0, 9, 8, 0, 0, 0, 0, 6, 0],
[8, 0, 0, 0, 6, 0, 0, 0, 3],
[4, 0, 0, 8, 0, 3, 0, 0, 1],
[7, 0, 0, 0, 2, 0, 0, 0, 6],
[0, 6, 0, 0, 0, 0, 2, 8, 0],
[0, 0, 0, 4, 1, 9, 0, 0, 5],
[0, 0, 0, 0, 8, 0, 0, 7, 9]]
def possible(y, x, n):
global grid
for i in range(9):
if grid[y][i] == n:
return False
for i in range(9):
if grid[x][i] == n:
return False
x0 = (x // 3) * 3
y0 = (y // 3) * 3
for i in range(3):
for j in range(3):
if grid[y0 + i][x0 + j] == n:
return False
return True
def solve():
global grid
for y in range(9):
for x in range(9):
if grid[y][x] == 0:
for n in range(1, 10):
if possible(y, x, n):
grid[y][x] = n
solve()
grid[y][x] = 0
return
print(np.matrix(grid))
if __name__ == "__main__":
solve()