【发布时间】:2014-06-06 04:59:06
【问题描述】:
因此,我正在尝试创建一个函数,该函数将接收一个列表列表,每个列表由编号为 1 到 9 的 9 个整数组成,如果它是数独的有效解决方案,则返回一个布尔值。现在,我已经设法解决了检查行和列的部分问题,但是我坚持检查三个三个框的实现。到目前为止,这是我的代码。
alist = [1,2,3,4,5,6,7,8,9]
def checkSudoku(grid):
a = grid
b = grid
c = grid
d = False
e = False
f = False
newlist = []
for i in a:
i.sort()
if i == alist:
d = True
else:
d = False
break
for j in range(9):
for k in b:
newlist.append(k)
newlist.sort()
if i == alist:
e = True
newlist = []
else:
e = False
break
if d == True and e == True:
return True
else:
return False
基本上,My 是测试它为真所必需的所有三个因素,然后如果三个都为真则返回 True,否则返回假。有什么帮助吗?
【问题讨论】:
-
好消息:有人已经解决了这个确切的问题。 norvig.com/sudoku.html
-
改进代码的建议:使用更好的变量名。如果不深入研究一堆代码,我无法完全了解您的
a到f变量的含义。如果他们有有意义的名字,我可能会立即看到问题。单字母变量名称通常很糟糕,除非在非常有限的情况下(i和j通常是循环中的传统索引变量,x、y和z具有悠久的数学传统作为坐标名称等) . -
任何时候你将一个变量设置为
False,你可能只是返回False。您可能也有兴趣查看set课程。 -
@emodendroket 如果这个问题已经在 Stack Overflow 的其他地方得到解决,那么这可能会被标记为重复。但是,提出已在外部回答的问题并没有错。
-
@SimonT 这并不是批评。发布问题的非现场解决方案的链接有什么问题吗?