/*
程序思想参考百度百科上"幻方法则" 2015-01-27
其实在维基百科上有更全面的,搜索Magic square即可查到,可惜太英语了,有点难,留着以后看^*^
代码环境xcode6.1 playground
几个公用函数只在第一篇显示,后面的篇章不在重复
func isMagic(s:[[Int]])->[Int]?
func printMagic(s:[[Int]])
func signed(aint: Int)->Int
func correction(k: Int, step: Int) ->Int
*/
/*
2、Strachey法生成双偶幻方
第一步,将n阶双偶幻方表示为4m阶幻方。将其等分为四分,成为如下图所示A、B、C、D四个2m阶偶数幻方。
A C
D B
A用1至(2m)^2填写成2m阶幻方;B用(2m)^2+1至2*(2m)^2填写成2m阶幻方;C用2*(2m)^2+1至3*(2m)^2填写成2m阶幻方;D用3*(2m^)2+1至4*(2m)^2填写成2m阶幻方;
将8阶双偶幻方表示为4×2阶幻方。将其等分为四个2×2阶偶数幻方,即4阶偶数幻方。
16 2 3 13 48 34 35 45
5 11 10 8 37 43 42 40
9 7 6 12 41 39 38 44
4 14 15 1 36 46 47 33
64 50 51 61 32 18 19 29
53 59 58 56 21 27 26 24
57 55 54 60 25 23 22 28
52 62 63 49 20 30 31 17
第三步,在A每行取m个小格(一侧对角线格为必换格,其余m-1格只要不是另一侧对角线格即可),将其与D相应方格内交换;B与C以相同方法进行。