我正在做的程序是从文本文件验证数独。到目前为止我有这个。你知道吗
file=input("Enter a filename: ")
with open(file) as data:
rowt=[0 for i in range(9)]
colt=[0 for i in range(9)]
for a,b in enumerate(data):
sb_rowt = 0
print (a,b)
for c, d in enumerate(b.split()):
print (c,d)
sb_rowt+=int(d)
colt[c]+=int(d)
rowt[a]=sb_rowt
rows=all(i==45 for i in rowt)
cols=all(i==45 for i in colt)
print(rows and cols)
问题是如果我有这样一个文本文件
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
5 5 5 5 5 5 5 5 5
程序仍将输出为true。我知道我需要删除任何重复的条目,但我不确定如何。你知道吗
应将读取和验证操作分开:
只有这样才能验证。你知道吗
从你的问题来看,我认为你没有走上正轨。无论有效与否,电路板上都应该有9*9的数字。您得到了正确的输入,但未能验证它。考虑改进验证算法。你知道吗
您不能仅使用数字的总和来验证网格。相反,您必须检查每一行和每一列是否包含从1到9的所有数字。你知道吗
你可以这样做:
首先,我从数据输入创建一个整数列表。然后我提取行和列(
zip(*field)
基本上在侧面翻转field
),并将它们转换成set
,因为顺序并不重要。最后,我将all
行和列与all_nums
集进行比较。你知道吗相关问题 更多 >
编程相关推荐