我正在尝试创建一个数独求解器,它接受numpy数组并返回正确答案。然而,目前我尝试的任何numpy数组都返回未解决的答案。
我认为问题出在:
returnsolved = 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
回答:
正如评论中@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