我正在编写一个程序,该程序读取文件中的一行并确定该行是否构成 Lo Shu 魔方。在这个幻方中,行之和、列之和、对角线之和必须等于 15,并且每个数字 1-9 在方格中只能出现一次。这是我到目前为止所拥有的:
def main():
for line in open("Magic Square Input.txt"):
items = line.split(" ")
items = [int(x) for x in items]
result = [items[0:3], items[3:6], items[6:9]]
isMagic(result)
def isMagic(result):
checks1 = ''
for x in result:
for y in range(3):
if sum (result[y][y] for y in range(3)) == 15:
if sum(x[y] for x in result) == 15:
checks1 = checkDupe(result)
else:
checks1 = 'Invalid'
else:
checks1 = 'Invalid'
print(checks1)
def checkDupe(result):
checks1 = ''
for i in range(0,8):
counter = 0
for j in result:
if (j == i):
counter += 1
if counter > 0:
checks1 = 'Invalid'
else:
checks1 = 'Valid'
return checks1
main()
我的文本文件的内容如下:
4 3 8 9 5 1 2 7 6
8 3 4 1 5 9 6 7 2
6 1 8 7 5 3 2 9 4
6 9 8 7 5 3 2 1 4
6 1 8 7 5 3 2 1 4
6 1 3 2 9 4 8 7 5
5 5 5 5 5 5 5 5 5
每行的前三个数字代表正方形的顶行,接下来的三个是中间行,最后三个是底行。我遇到的问题是前三个方块是有效的,而后四个应该是无效的。但是我的代码不断为我打印出来的是
Valid
Valid
Valid
Valid
Valid
Invalid
Valid
有人能告诉我我在哪里搞砸了吗?我对 python 还很陌生,我一直盯着这个几个小时试图理解它。