如何修复Python数独求解器的bug?

2024-04-19 18:44:45 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的家庭作业


你好。我不得不做一个python数独解算器,这就是我想出的。在

http://pastebin.com/JRKaqSed(包括我的输入和我得到的输出)

但是,当我运行它时,第一个填充调用会导致下面的错误。它似乎同时添加了1到2个单元格。在

0 5 9 0 0 0 4 8 3 #Current row being tested
To Add, 1 #Number to add
0 5 #Row, Column
0 5 9 0 1 1 4 8 3 #Row it outputs

我不明白它为什么这么做。任何帮助都将不胜感激。在

谢谢你

编辑:

我找到了虫子。我只在每一行的开头生成行集,因此它不知道是否已经使用了一个数字。在

但是,我的代码仍然没有完成数独网格


Tags: tocomaddhttpnumber错误currentrow
2条回答

我找到了虫子。我只在每一行的开始处生成行集,因此它不知道是否已经使用了一个数字,这导致了问题。在

以下是正确的代码: http://pastebin.com/JRKaqSed

但它仍然没有输出完整的数独网格。在

我不能复制你得到的错误,但是你在数独网格中的阅读方式有问题。在

0 5 9 0 0 0 4 8 3
0 0 0 0 0 0 0 1 2
0 1 0 0 2 8 0 0 0
0 9 8 0 7 4 0 2 0
0 4 0 0 8 0 0 3 0
0 7 0 6 3 0 5 4 0
0 0 0 1 6 0 0 5 0
6 2 0 0 0 0 0 0 0
7 3 5 0 0 0 8 6 0

你这样读文件:

^{pr2}$

这将创建一个网格,它是一个列表列表,但不是您期望的那个。例如,这是第一行:

['0', ' ', '5', ' ', '9', ' ', '0', ' ', '0', ' ', '0', ' ', '4', ' ', '8', ' ', '3']

您不必将文件读入一个字符串并在换行符上拆分它,而是可以遍历open file对象并在空间上拆分每一行。在

fi = open("sudoku.txt", "r")
grid = []
for line in fi:
    grid.append([int(i) for i in line.split(" ")])

所以我认为你的问题与网格中仍然存在的空间有关,因为在解决了这个问题(以及另一个关于旧网格的问题)之后,它解决了数独。在

相关问题 更多 >