算法口诀:
一居上行正中央,依次斜填切莫忘;上出框时向下放,右出框时向左放;排重便在下格填,右上排重一个样
import numpy as np
n=int(input("输入是几宫格"))
a=np.zeros((n,n))
if n%2==0:
print("unknown")
else:
num=1
i=0
j=n//2
a[i][j]=num
while(num<n*n):
num=num+1
if i-1<0 and j+1>=n:
a[i+1][j]=num
i=i+1
elif i-1<0:
for k in range(n-1,0,-1):
if a[k][j+1]==0:
a[k][j+1]=num
i=k
j=j+1
break
elif j+1>=n:
for k in range(n):
if a[i-1][k]==0:
a[i-1][k]=num
i=i-1
j=k
break
else:
if a[i-1][j+1]!=0:
a[i+1][j]=num
i=i+1
else:
a[i-1][j+1]=num
i=i-1
j=j+1
print(a)
运行结果: