我该如何解决我的Python数独解决者错误?
这是从我的家庭作业我该如何解决我的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
我不明白为什么它这样做。任何帮助将不胜感激。
谢谢
编辑:
我发现的bug。我只是在每行的开始处生成rowSet,因此它不知道是否已经使用了一个数字。
然而,我的代码还没有完成的数独电网
我不能复制你的错误,但有一个与你在数独电网如何读的问题。
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
在这个文件中读取你的方式:
fi = open("sudoku.txt", "r")
inFile = fi.read()
grid = [list(i) for i in inFile.split("\n")]
这将创建一个网格,是列表的列表,而不是你所期望的一个。例如,这里的第一行:
['0', ' ', '5', ' ', '9', ' ', '0', ' ', '0', ' ', '0', ' ', '4', ' ', '8', ' ', '3']
而不是把文件读入一个字符串和换行符拆分它,你可以通过打开的文件对象循环和分裂分割每行的空间。
fi = open("sudoku.txt", "r")
grid = []
for line in fi:
grid.append([int(i) for i in line.split(" ")])
所以我觉得你的问题涉及到的空间仍然存在于你的网格,因为解决这个(和其他问题有关oldGrid的地方),它解决了数独后。
对不起,我给了不正确的输入。我实际使用的输入是非空格分隔的版本。 另外:我已经找到了这个错误,但是你的回应。 我也已将pastebin更新到正确的输入 http://pastebin.com/JRKaqSed – AceFire6 2013-05-14 13:28:34
@ AceFire6所以现在它工作吗?因为阅读网格并正确打印是我迄今为止唯一的问题。很明显,我没有验证解决方案,但它似乎工作正常 – 2013-05-14 13:35:20
不,它没有完全解决电网问题。它得到这个:pastebin.com/8sgUzXVN然后它停止填充新的网格位置 – AceFire6 2013-05-14 13:42:22
我发现了这个错误。我只是在每行的开始处生成rowSet,因此它不知道是否已经使用了一个数字,这是造成问题的原因。
以下是更正代码: http://pastebin.com/JRKaqSed
它仍然无法输出完全完成的数独格虽然。
也许你应该考虑尝试几个部分解决的数独谜题作为一个测试,找出什么样的情况下它没有正确处理。或者考虑为你认为检查某些条件的函数编写单元测试。 – 2013-05-14 14:36:43
'pdb'是你的朋友 – shx2 2013-05-14 12:57:19
我发现了这个错误。但是,我的代码没有达到完成的网格:/ – AceFire6 2013-05-14 13:15:33
您应该将解决方案发布到您的问题,以作为未来用户的答案。 – KronoS 2013-05-14 14:26:58