递归数独求解器无法解决任何问题

问题描述

我当时正在开发Sudoku求解器,当我运行它时,它却不起作用-函数f返回了none类型。调试后,我发现代码无法解决某些平方。我不知道为什么会这样,但是我怀疑找到一个可能的数字后,循环检查正方形中所有可能的数字会停止,也不会检查其余的数字。您能在代码中指出我的问题吗?谢谢。

注意:对于数独中的空白处,输入0。

# enter the Sudoku as a two-dimensional array (a[i][j])

def square_check(array,loc_x,loc_y,val):
    added_x = loc_x - (loc_x % 3)
    added_y = loc_y - (loc_y % 3)
    for i in range(3):
        for j in range(3):
            if i+added_y != loc_y or j+added_x != loc_x:
                if array[i+added_y][j+added_x] == val:
                    return False
    return True


def line_check(array,val):
    for i in range(9):
        if i != loc_x:
            if array[loc_y][i] == val:
                return False
    return True


def col_check(array,val):
    for i in range(9):
        if i != loc_y:
            if array[i][loc_x] == val:
                return False
    return True


def f(array):
    flag = True
    mark = True
    for i in range(0,9):
        for j in range(0,9):
            if array[i][j] == 0:
                flag = False
    if flag:
        return array

    for i in range(0,9):
            if array[i][j] == 0:
                for num in range(1,10):
                    if square_check(array,j,i,num):
                        if col_check(array,num):
                            if line_check(array,num):
                                new_array = array.copy()
                                new_array[i][j] = num
                                mark = False
                                f(new_array)
                if mark:
                    break


def to_str(array):
    for i in range(len(array)):
        print(array[i])
    print("")


to_str(f(sudoku))

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...