ファイル内の行を読み取り、その行が Lo Shu 魔方陣を構成するかどうかを判断するプログラムをコーディングしています。この魔方陣では、行の合計、列の合計、および対角線の合計が 15 に等しくなければならず、1 から 9 の各数字は正方形内で 1 回しか出現しません。これは私がこれまでに持っているものです:
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
各行の最初の 3 つの数字は正方形の一番上の行を表し、次の 3 つの数字は中央の行、最後の 3 つの数字は一番下の行を表します。私が抱えている問題は、最初の 3 つの正方形が有効であり、最後の 4 つが無効であると想定されていることです。しかし、私のコードが私のために出力し続けるのは
Valid
Valid
Valid
Valid
Valid
Invalid
Valid
誰かが私がここでどこを台無しにしているかを教えてもらえますか? 私はPythonにかなり慣れていないので、これを理解するために何時間もこれを見つめてきました。