python3实现n阶魔阵

'''

/*N阶魔阵是一个N X N的由1到N^2之间的自然数构成的矩阵 

*它的每一行、每一列和对角线之和均相等。例如,一个三阶 

*魔阵,它的每一行、每一列和对角线之和均为15:

 ________ 

|8 | 1| 6| 

———— 

|3 | 5| 7| 

————

 |4 | 9| 2| 

———— 

编写一个程序打印任意N阶魔阵。

 依次将1到N^2填入矩阵,填入的位置有如下规则确定。

 *第一个元素放在第一行中间一列 

*下一个元素存放在当前元素的上一行、下一列

 *如上一行、下一列已经有内容,则下一个元素存放在当前列的下一行。 

''' 

#!/usr/bin/env python3
#-*- coding:utf-8 -*-

n=int(input("input n(3,5,7,9...):"))
#生成魔阵
row,col=0,n//2
magic=[]
for i in range(n):
    magic.append([0]*n)
magic[row][col]=1
for i in range(2,n*n+1):
    r,l=(row-1+n)%n,(col+1)%n    
    if(magic[r][l]==0):row,col=r,l       
    else: row=(row+1)%n
    magic[row][col]=i  
#输出
t=len(str(n*n))  #计算n*n的位数
for i in magic:
    for j in i:
        print("%-*d" % (t,j),end="  ") #左对齐,占位是t
    print("")

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页