我是python和StackOverflow的新手,尝试编写一个小程序来检查一个数独难题(即一系列列表)是正确的(True)还是不正确的(False)。
所以我通过编写两个函数来分解它,一个检查行(即检查1-n-中的每个数字中是否有一个,其中n是列表的长度)和一个检查列的函数(确保列表中没有元素交叉,并且在位置0、1等处,从1到n的每个数字中只有一个)。
第一个函数工作正常,但第二个函数(检查列)似乎总是输出“True”,即使拼图不正确。例如,对于列表
myList=
[[1,2,3],
[3,1,2],
[3,2,3]],
当拼图错误时,输出为True。我试过很多次通过逐行检查来发现问题,但都没用!有人能指出我做错了什么,或者分享一些更好的数独检查程序编码方法吗?:)
谢谢您!!下面是我检查列的代码:def check_down(list_of_lists):
a = [] #checking list
i = -1 #list
j = 0 #position
n = len(list_of_lists)
while True:
i = i + 1
if [list_of_lists[i][j]] in a: #if list element already in a, it is a copy so False
return False
break
elif [list_of_lists[i][j]] not in a:
a = a + [list_of_lists[i][j]] #if list element not in a then add it
if i == n-1 and j == n-1: #if loop reaches end of lists, True
return True
break
elif i == n-1 and j!= n-1: #if last list but not last position, move on
j = j +1 #next position to check
i = -1 #reset i to -1
del a[:] #empty the checking list
else:
return False