マジックスクエアを作る際に問題があります。マジックスクエアは、行と列のすべてに同じ合計を持つ数値の2乗です。 例:
私は私のコードで何が間違っている見当がつかないが、そこからmagicin.txtとブルートフォースの正方形からの3つの数字を読み書きすることになっていますmagicout.txtの出力"マジックスクエア"が動作しないようにするコード
これはAIOの練習問題に含まれているため、私はこれをコーディングしています。ウェブサイトは次のとおりです。 http://orac.amt.edu.au/cgi-bin/train/problem.pl?set=aio16int&problemid=902
さらに詳しい説明が必要な場合は、コメントしてください。コードは(それは無用プリントの束を持っているとデバッグのための文を「キーを押して終了します」)ここにある:
def Main():
file=open("magicin.txt","r")
magicin=file.read()
file.close()
num1=""
num2=""
num3=0
num4=""
num5=0
num6=0
num7=0
num8=0
num9=0
indices = [i for i, x in enumerate(magicin) if x == " "]
splitSpace2=indices[1]
splitSpace=indices[0]
for x in range(splitSpace):
num1+=magicin[x]
for x in range(splitSpace+1,splitSpace2):
num2+=magicin[x]
for x in range(splitSpace2+1,len(magicin)):
num4+=magicin[x]
num1=int(num1)
num2=int(num2)
num4=int(num4)
for x in range(20):
num3=x
sum=num1+num2+num3
num7=sum-num1
if num7<0:
print("Falied with num7="+str(num7))
else:
for y in range(20):
num5=y
for z in range(20):
num6=z
if num6+num5+num4==sum:
for a in range(20):
num8=a
if num8+num2+num5==sum:
for b in range(20):
num9=b
if num9+num8+num7==sum and num9+num6+num3==sum:
answer=[str(num1),str(num2),str(num3),str(num4),str(num5),str(num6),str(num7),str(num8),str(num9)]
file=open("magicout.txt","w")
file.write(answer[0]+" "+answer[1]+" "+answer[2]+"\n"+answer[3]+" "+answer[4]+" "+answer[5]+"\n"+answer[6]+" "+answer[7]+" "+answer[8])
file.close()
return
else:
print("failed with num9+num8+num7==sum and num9+num6+num3==sum"+" "+str(num9)+" "+str(num8)+" "+str(num7)+" "+str(sum),str(num9),str(num6),str(num3),str(sum))
else:
print("Failed with num8+num2+num5==sum",str(num8),str(num2),str(num5),str(sum))
else:
print("Failed with num6="+str(num6)+" num5="+str(num5),"num4="+str(num4),"sum="+str(sum))
if x==19:
print(num1,num2,num3,num4,num5,num6,num7,num8,num9)
wait=input("")
file=open("magicout.txt","w")
file.write("none")
file.close()
answer=Main()
が
あなたがサイズnの可能性のあるすべての魔法の四角を作るように求められたら、それは面白いです... –
@IrmendeJongこれらの四角形の半数の魔法の性質を繰り返すことを許していれば(対角線は関係ありません)、可能な正方形の数はnが増えるにつれて大規模に大きくなるだろう。一方、「真の」魔方陣を見つけることは、別の問題です。 –