幻方解法之swift语言程序实现开篇
来源:互联网 发布:ubuntu 14.04 64位 编辑:程序博客网 时间:2024/04/30 02:27
/*
程序思想参考百度百科上"幻方法则" 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,0] 表示第n行与第一行的和不等
[0,n] 表示第n列与第一行的和不等
[1,1] 表示左对角线与第一行的和不等
[1,-1]表示右对角线与第一行的和不等
*/
func isMagic(s:[[Int]])->[Int]?{
var step = s.count
//计算某一行的和
func rowSum(row:Int) ->Int{
var sum =0
forvar col =0; col < step; ++col{
sum = sum + s[row][col]
}
return sum
}
//计算某一列的和
func colSum(col:Int) ->Int{
var sum =0
forvar row =0; row < step; ++row{
sum = sum + s[row][col]
}
return sum
}
//计算左对角线的和
func leftDiaSum() ->Int{
var sum =0
forvar row =0; row < step; ++row{
sum = sum + s[row][row]
}
return sum
}
//计算右对角线的和
func rightDiaSum() ->Int{
var sum =0
forvar row =0; row < step; ++row{
sum = sum + s[row][step - row -1]
}
return sum
}
//第一行的和
let sum0 =rowSum(0)
//行的和是否相等
forvar row =1; row < step; ++row{
if sum0 !=rowSum(row){
return [row,0]
}
}
println("经检查,行的和都是相等的")
//列的和是否相等
forvar col =0; col < step; ++col{
if sum0 !=colSum(col){
return [0,col]
}
}
println("经检查,列的和都是相等的")
//左对角线的和是否相等
if sum0 !=leftDiaSum(){
return [1,1]
}
println("经检查,左对角线的和都是相等的")
//右对角线的和是否相等
if sum0 !=rightDiaSum(){
return [1,-1]
}
println("经检查,右对角线的和都是相等的")
return nil
}
//打印幻方数组
func printMagic(s:[[Int]]){
let step = s.count
forvar i =0; i < step; ++i{
println("\(s[i])")
}
}
//正数返回1,负数返回-1
func signed(aint:Int)->Int{
if aint >0{
return1
}elseif aint <0{
return -1
}else{
return0
}
}
//修正角标索引
func correction(k:Int, step:Int) ->Int{
return (k % step + step) % step
}
- 幻方解法之swift语言程序实现开篇
- 幻立方解法之开篇
- 幻方解法之总结篇
- 幻方解法之Merzirac法生成奇阶幻方
- 幻方解法之Louberel法生成奇阶幻方
- 幻方解法之horse法生成奇阶幻方
- 幻方解法之错位补角法生成奇阶幻方
- 幻方解法之Spring法生成双偶幻方
- 幻方解法之Strachey法生成单偶幻方
- 幻方解法之Strachey法生成双偶幻方
- C语言实现《设计模式之禅》——开篇
- [算法]数据结构算法背包问题解法之递归解法,C语言实现
- swift 开篇
- 汉诺塔解法C语言实现
- swift语言之fallthrough
- (ZT)幻方常规解法汇总
- c++幻方的解法与判断
- swift语言之ios开发实现界面跳转
- 做网站细节问题
- java 解析竖线分隔符
- [LeetCode]168.Excel Sheet Column Title
- 查询某张表是否存在外键关联
- zigbee 出现 Energy level Scan Failed解决方法
- 幻方解法之swift语言程序实现开篇
- centos apache 安装ab测试命令
- 往DUAL表中增加行信息(dual是一个虚拟表)
- ArrayList和LinkedList底层实现的区别
- Spring AOP介绍及源码分析
- MapReduce之topN
- 字符串匹配的KMP算法
- poj 1182 食物链 种类并查集
- rosrun openni_tracker openni_tracker