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

本文介绍了一种使用Strachey法生成双偶幻方的程序设计方法,通过将n阶双偶幻方表示为4m阶幻方并进行特定的行列交换操作。详细步骤包括幻方的初始化、子区域填充以及交换过程,并提供了测试示例,展示了8阶、12阶和16阶幻方的生成结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*

程序思想参考百度百科上"幻方法则" 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

*/


/*

2Strachey法生成双偶幻方

第一步,将n阶双偶幻方表示为4m阶幻方。将其等分为四分,成为如下图所示ABCD四个2m阶偶数幻方。

A C

D B

A1(2m)^2填写成2m阶幻方;B(2m)^2+12*(2m)^2填写成2m阶幻方;C2*(2m)^2+13*(2m)^2填写成2m阶幻方;D3*(2m^)2+14*(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相应方格内交换;BC以相同方法进行。

对于8阶幻方,A每行取2个小格(一侧对角线格为必换格,其余1格只要不是另一侧对角线格即可),要与D相应方格内交换;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值