def is_valid(board, row, col, num): for x in range(9): if board[row][x] == num or board[x][col] == num: return False box_row, box_col = row // 3 * 3, col // 3 * 3 for i in range(3): for j in range(3): if board[box_row + i][box_col + j] == num: return False return True def solve(board): for i in range(9): for j in range(9): if board[i][j] == 0: for num in range(1, 10): if is_valid(board, i, j, num): board[i][j] = num if solve(board): return True board[i][j] = 0 return False return True board = [ [0, 3, 5, 0, 7, 8, 0, 6, 4], [0, 0, 4, 6, 5, 3, 8, 0, 2], [6, 0, 8, 0, 1, 4, 0, 0, 5], [3, 9, 1, 8, 2, 0, 4, 0, 0], [0, 0, 7, 3, 9, 0, 0, 8, 0], [8, 5, 6, 1, 4, 7, 9, 2, 3], [0, 6, 9, 4, 8, 2, 0, 0, 0], [5, 8, 2, 7, 3, 1, 6, 4, 9], [0, 0, 3, 5, 6, 9, 2, 0, 8] ] solve(board) for row in board: print(row)