,这是我的作业,
你好。我不得不做了一条巨蟒sudoku的求解器,这就是我想出来的。
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我搞不懂它为什么要这么做。任何帮助都将不胜感激。
谢谢
编辑:
我找到窃听器了。我只是在每一行的开头生成rowSet,因此它不知道是否已经使用了一个数字。
然而,我的代码仍然没有完成sudoku网格
发布于 2013-05-14 13:20:36
我无法复制您得到的错误,但是在sudoku网格中的读取方式有一个问题。
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']
与将文件读入字符串并在换行符上拆分文件不同,您可以循环遍历打开的file对象,并在空格上拆分拆分中的每一行。
fi = open("sudoku.txt", "r")
grid = []
for line in fi:
grid.append([int(i) for i in line.split(" ")])因此,我认为您的问题与网格中仍然存在的空间有关,因为在修复这个问题(以及其他有关oldGrid的问题)之后,它解决了sudoku问题。
发布于 2013-05-14 14:29:20
我找到窃听器了。我只是在每一行的开头生成rowSet,因此它不知道是否已经使用了一个数字,这导致了问题。
以下是更正后的代码:http://pastebin.com/JRKaqSed
不过,它仍然没有输出完整的sudoku网格。
https://stackoverflow.com/questions/16543720
复制相似问题