摘要:提出任意阶幻方的python语言的实现方法,分为奇数阶,偶数阶(n为整数,分为4n阶和4n+2阶幻方),速度还算可以,你可以体会以下。测试999阶幻方可以算出来;
1,什么是幻方
幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。
2,举个例子
《射雕英雄传》中就曾经出现过验算幻方的情景,下面就是一个简易的3阶幻方啦。
如下是代码:
import math
# 魔方阵又称幻方
class MFZ():
def __init__(self):
self.n = int(input("请输入您要创建几阶魔法阵:"))
def main(self):
if self.n % 2 == 1:
self.mFZJ(self.n)
elif self.n % 2 == 0:
if self.n % 4 == 0:
self.mFZO1(self.n)
elif self.n % 4 == 2:
self.mFZO2(self.n)
def mFZJ(self,n):
'''魔方阵奇数阶算法
# 一居上行正中央:数字 1 放在首行最中间的格子中;。
# 依次斜填切莫忘:向右上角斜行,依次填入数字;
# 上出框时向下放:如果右上方向出了上边界,就以出框后的虚拟方格位置为基准
# ,将数字竖直降落至底行对应的格子中 。
# 右出框时向左放:同上,向右出了边界,就以出框后的虚拟方格位置为基准,
# 将数字平移至最左列对应的格子中;。
# 排重便在下格填:如果数字右上的格子已被其它数字占领,
# 就将 填写在下面的格子中;
# 右上排重一个样:如果朝右上角出界,和上面重复的情况做同样处理。'''
n = self.n
erWei = [[0] * n for i in range(n)]
num_h = list(range(1, n ** 2 + 1))
F1 = math.floor(n / 2) # 第一个数组1所在数组 的下标位置;
erWei[0][F1] = 1
HH = n * (n ** 2 + 1) / 2 # 阶幻和
n1 = 0 # erwei[n1][n2]
n2 = F1
for i in range(len(num_h) - 1):