我的算法返回未解决的答案。我该如何解决?

My algorithm is returning unsolved answers. How do I fix this?

我正在尝试创建一个采用 numpy 数组和 returns 正确答案的数独求解器。但是,目前,我尝试的任何 numpy 数组 return 都是未解决的答案。

我认为问题在于:

return
solved = puzzle.copy()
solver(puzzle)

但是,我想不通到底是为什么。在上面的代码中,我试图存储解决方案。不过,很明显我没有正确执行此操作,或者我试图在错误的地方执行此操作。

我应该怎么做才能正确 return 解决难题?

完整代码段如下:

def solver(puzzle):
    empty_cell = find_empty(puzzle)
    if not empty_cell:
        return True

    else:
        for num in range(1, 10):
            if valid(puzzle, num, empty_cell):
                puzzle[empty_cell[0]][empty_cell[1]] = num 
                if solver(puzzle):
                    return
                    solved = puzzle.copy()
                    solver(puzzle)
                puzzle[empty_cell[0]][empty_cell[1]] = 0
        return False

正如 Szala 在评论中所说,您在 return 语句之后有代码永远不会执行。既然你想 return 正确地拼图,试试这个:

def solver(puzzle):
    empty_cell = find_empty(puzzle)
    if not empty_cell:
        return puzzle.copy()

    else:
        for num in range(1, 10):
            if valid(puzzle, num, empty_cell):
                puzzle[empty_cell[0]][empty_cell[1]] = num 
                returned_value = solver(puzzle)
                if not returned_value is False:
                    return returned_value
                puzzle[empty_cell[0]][empty_cell[1]] = 0
        return False