This is a sudoku solver function and I have 2 questions:
import numpy as np
def possible(y, x, n):
    global sudoku
    for i in range(9):
        if sudoku[y][i] == n:
            return False
    for i in range(9):
        if sudoku[i][x] == n:
            return False
    x0 = (x // 3) * 3
    y0 = (y // 3) * 3
    for i in range(3):
        for j in range(3):
            if sudoku[y0 + i][x0 + j] == n:
                return False
    return True
def solve():
    global sudoku
    for y in range(9):
        for x in range(9):
            if sudoku[y][x] == 0:
                for n in range(1, 10):
                    if possible(y, x, n):
                        sudoku[y][x] = n
                        solve()
                        sudoku[y][x] = 0
                return
    print("solution:\n", np.matrix(sudoku))
    return sudoku # (This is what I have trid)
sudoku = [[0, 0, 0, 0, 7, 0, 0, 0, 0],
          [0, 0, 6, 0, 0, 0, 7, 0, 0],
          [2, 0, 0, 8, 0, 3, 0, 0, 5],
          [0, 0, 8, 0, 0, 0, 5, 0, 0],
          [0, 2, 0, 4, 0, 9, 0, 3, 0],
          [9, 0, 0, 6, 0, 7, 0, 0, 2],
          [5, 0, 9, 0, 0, 0, 3, 0, 8],
          [0, 0, 3, 0, 0, 0, 9, 0, 0],
          [0, 7, 0, 9, 0, 4, 6, 5, 0]]
solve()
print("solution:\n", np.matrix(sudoku))
- Why 2nd - printprint the original sudoku?- # This is the 1st print: solution: [[3 5 4 1 7 6 2 8 9] [1 8 6 2 9 5 7 4 3] [2 9 7 8 4 3 1 6 5] [4 6 8 3 1 2 5 9 7] [7 2 1 4 5 9 8 3 6] [9 3 5 6 8 7 4 1 2] [5 4 9 7 6 1 3 2 8] [6 1 3 5 2 8 9 7 4] [8 7 2 9 3 4 6 5 1]] # This is the 2nd print: solution: [[0 0 0 0 7 0 0 0 0] [0 0 6 0 0 0 7 0 0] [2 0 0 8 0 3 0 0 5] [0 0 8 0 0 0 5 0 0] [0 2 0 4 0 9 0 3 0] [9 0 0 6 0 7 0 0 2] [5 0 9 0 0 0 3 0 8] [0 0 3 0 0 0 9 0 0] [0 7 0 9 0 4 6 5 0]]
- How can I get the sudoku solution (not print it), because I want to reuse the solution. (I have tried using - return sudokubut get- None)
Thanks:)
 
     
    