幻方解法之Strachey法生成单偶幻方

/*

程序思想参考百度百科上"幻方法则" 2015-01-27

http://baike.baidu.com/link?url=7ynfkLYfGv4f7PtQkuH4PSn_8IFr_QFAN-Bnsk0hmd2uk6WITW7r1d8o7IQJ1IL3bNRHbpHYbVXpDAvNbyJBDK


其实在维基百科上有更全面的,搜索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

*/


/*

二、单偶幻方的解法

n阶单偶幻方表示为4m+2阶幻方。将其等分为四分,成为如下图所示ABCD四个2m+1阶奇数幻方。

A C

D B

A1(2m+1)^2填写成(2m+1)阶幻方;B(2m+1)^2+12*(2m+1)^2填写成(2m+1)阶幻方;C2*(2m+1)^2+13*(2m+1)2填写成(2m+1)阶幻方;D3*(2m+1)^2+14*(2m+1)^2填写成(2m+1)阶幻方;

【注:(2m+1)^2(2m+1)的平方,以下同】

8 1 6 26 19 24

3 5 7 21 23 25

4 9 2 22 27 20

35 28 33 17 10 15

30 32 34 12 14 16

31 36 29 13 18 11

[1] A阵中取左侧m列与D阵对应小格对调;在C阵中取右侧m-1列与B阵对应小格对调;最后在A阵中间行取中心格与左侧一格与D阵对应小格对调。

6阶幻方就是4*1+2,那么m就是1。在A中间一行取中心格1个小格,其他行左侧边缘取1个小格,将其与D相应方格内交换;BC接近右侧m-1列相互交换(6阶幻方m-1=0,则不用互换)。如下图用Strachey法生成的6阶幻方:

35 1 6 26 19 24

3 32 7 21 23 25

31 9 2 22 27 20

8 28 33 17 10 15

30 5 34 12 14 16

4 36 29 13

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值