幻方解法之总结篇

/*

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

*/


//看了前面几篇,大家也看出来了,不管几阶,只要大于等于3,都是有解的,而且很多都是有不同的解法

//不过在需要用时再去想用哪个方法,貌似有点伤脑筋

//不如简单写成一个方法,当需要几阶时,直接就给个解


func CreateMagic(step: Int) -> ([[Int]])?{

    if step < 3 { return nil}

    

    if (step % 2 != 0){

        return JJMerzirac(step: step)

    }else if (step % 4 == 0){

        return SOSpring1(step: step, swap00: true)

    }else if (step % 2 == 0){

        return DOStrachey(subMagic: JJMerzirac(step: step/2)!)

    }else{

        println("这里不会进来的")

        return nil

    }

}


//测试

func testCreateMagic(){

    func testStep(step: Int){

        let s = CreateMagic(step)

        if let s1 = s{

            printMagic(s1)

            let k = isMagic(s1)

            if let k1 = k{

                println("这个不是幻方 k=\(k1)")

            }

        }else{

            println("没有生成幻方 step=\(step)")

        }

    }

    

    let time1 = NSDate()

    for var i = 3; i<20; ++i{

        println("\n\(i)阶幻方")

        testStep(i)

    }

    let time2 = NSDate()

    println("time1=\(time1)")

    println("time2=\(time2)")

}


//testCreateMagic()


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值