python中的蛮力数独。局部变量问题

时间:2019-12-30 14:25:34

标签: python sudoku puzzle

我正在尝试使我的PC填写有一些额外要求的数独。 我将数独中的所有位置都分配给了这样的变量。 aa =“ 11”(aa在左上角),ii =“ 99”。 我需要用字符串而不是整数来处理拼图的额外要求。

示例:

aa, ab, ac, ad, ae, af, ag, ah, ai = "11", "12", "13", "14", "15", "16", \
                                 "17", "18", "19"

此外,我这样制作了行和列:

row1 = [aa, ab, ac, ad, ae, af, ag, ah, ai]
row2 = [ba, bb, bc, bd, be, bf, bg, bh, bi]

rows = [row1, row2, etc...]

col1 = [row[0] for row in rows]
col2 = [row[1] for row in rows]

这是我应该填写的数独功能:

def sudoku():
    for var in alles:
        options = ["1", "2", "3", "4", "5", "6", "7", "8", "9"]
        for row in rows:
            if var in row:
                for other in row:
                    if other in options:
                        options.remove(other)
        for col in cols:
            if var in col:
                for other in col:
                    if other in options:
                        options.remove(other)

        if options != []:
            var = random.choice(options)
        else:
            break

这个想法是,它为数独的每个点(所有变量)分配一个新值,并且新值不能已经在同一行或同一列中。

问题是我的函数似乎根本没有改变'var'。此外,当将鼠标悬停在函数中的最后一个“ var”上时,pycharm会发出通知:“未使用局部变量”。

您知道我如何使我的功能按预期工作吗?

感谢您的阅读,我希望您有一个快乐,健康的2020年:)

0 个答案:

没有答案