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

问题描述

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

我认为问题在于:

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

但是,我无法弄清楚究竟是为什么。在上面的代码中,我试图存储解决方案。不过,很明显我没有正确执行此操作,或者我试图在错误的地方执行此操作。

我应该怎么做才能正确返回已解决的难题?

下面的完整代码段:

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

标签: pythonartificial-intelligence

解决方案


正如 Szala 在评论中所说,您在 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

推荐阅读