快捷搜索:  汽车  科技

python如何求方差(Python填幻方第一篇奇数幻方)

python如何求方差(Python填幻方第一篇奇数幻方)(5)如果这个数所要放的格已经有数填入,那么就把它放在前一个数的上一行同一列的格内。(4)如果这个数所要放的格已经超出了底行且超出了最右列,那么就把它放在顶行且最左列;(1)每一个数放在前一个数的右下一格;(2)如果这个数所要放的格已经超出了最下行那么就把它放在顶行,仍然要放在右一列;(3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在下一行;

幻方按照阶数可分成了三类,奇数阶幻方双偶阶幻方单偶阶幻方

本次写的是奇数阶幻方

奇数阶幻方最经典的填法是罗伯法。填写的方法是:

把1(或最小的数)放在最后一行正中;按以下规律排列剩下的(n×n-1)个数:

(1)每一个数放在前一个数的右下一格;

(2)如果这个数所要放的格已经超出了最下行那么就把它放在顶行,仍然要放在右一列;

(3)如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在下一行;

(4)如果这个数所要放的格已经超出了底行且超出了最右列,那么就把它放在顶行且最左列;

(5)如果这个数所要放的格已经有数填入,那么就把它放在前一个数的上一行同一列的格内。

python如何求方差(Python填幻方第一篇奇数幻方)(1)

五阶幻方

Python代码(在头条中发的代码,缩进被删除了)

#encoding=utf-8 class HF: def __init__(self n): self.n = n self.list=[] for i in range(n): self.list.append([0]*n) def printHf(self): x = (self.n-1)//2 y = self.n-1 for value in range(1 self.n**2 1): self.list[y][x]=value if self.list[(y 1) % self.n ][(x 1)% self.n] == 0: x = (x 1)% self.n y = (y 1)% self.n else: y = y-1 for tmp in self.list: for x in tmp: print(x end='\t') print() if __name__=='__main__': HF(5).printHf()

猜您喜欢: