/*接上篇

对了,我是来找规律的,找幻立方的生成方法的

先看看这个7阶的完美幻立方

初始位置1是在4-1-1(第4行,第1列,第1层,0为基数)

下一步的位置与上一步的相对位移是4-2-2

7的倍数后有个跳步,因为按4-2-2规则,如果不跳的话8的位置就是1的位置,总不能把1给换了吧

7的倍数后的数与前数的相对位移是2-4-0

7*7=49的倍数后又有一个跳步,同样,按照前面的规则,如果不跳的话就没得走了

跳步的相对位移是2-3-3

我们把阶数step,起始位置point0,移步规则deltaPoint,7倍数的跳步规则deltaLine,49倍数的跳步规则deltaSide都写成参数

这样创建幻立方的通用方法就出来了

*/

func createCube(#step: Int, #point0:(row:Int, col:Int, deep:Int),#deltaPoint:(row:Int, col:Int, deep:Int),#deltaLine:(row:Int, col:Int, deep:Int),#deltaSide:(row:Int, col:Int, deep:Int)) -> ([[[Int]]])?{

let cube1 = [Int](count: step, repeatedValue: 0)

let cube2 = [[Int]](count: step, repeatedValue: cube1)

var cube = [[[Int]]](count: step, repeatedValue: cube2)

func deltaP(#pcurr:(row:Int, col:Int, deep:Int),#delta:(row:Int, col:Int, deep:Int),#step:Int)->(row:Int, col:Int, deep:Int){

var nextrow = pcurr.row + delta.row

var nextcol = pcurr.col + delta.col

var nextdeep = pcurr.deep + delta.deep

nextrow = correction(nextrow, step)

nextcol = correction(nextcol, step)

nextdeep = correction(nextdeep, step)

return (row: nextrow, col: nextcol, deep: nextdeep)

}

var p = point0

var iPut = 1

cube[p.row][p.col][p.deep] = iPut++

var time = step * step * step

do{

var nextp = deltaP(pcurr: p, delta: deltaPoint, step: step)

if (cube[nextp.row][nextp.col][nextp.deep] != 0){

nextp = deltaP(pcurr: p, delta: deltaLine, step: step)

if (cube[nextp.row][nextp.col][nextp.deep] != 0){

nextp = deltaP(pcurr: p, delta: deltaSide, step: step)

if (cube[nextp.row][nextp.col][nextp.deep] != 0){

if time < 2{

return cube

}else{

return nil

}

}

}

}

p = nextp

cube[p.row][p.col][p.deep] = iPut++

}while(time-- > 0)

return nil

}

//测试方法

func testCreatePerfectCube7(){

//测试一下我这个号称通用的方法能不能生成上述完美7阶幻立方

let perfectCube7 = createCube(step: 7, point0: (row: 4, col: 1, deep: 1), deltaPoint: (row: 4, col: 2, deep: 2), deltaLine: (row: 2, col: 4, deep: 0), deltaSide: (row: 2, col: 3, deep: 3))

printMagicCube(perfectCube7!)

println("\nisMagicCube 检查")

let line1 = isMagicCube(perfectCube7!,true)

if let line1_ = line1 {

println("不是幻立方,line=\(line1_)")

}

}

//testCreatePerfectCube7()

//看看下面这打印的,顿时觉得自己还真有点三脚猫的功夫

/*

第0层

[226,252,320,45,64,139,158]

[115,183,209,277,296,28,96]

[4,72,147,166,234,253,328]

[285,304,29,55,123,191,217]

[174,242,261,336,12,80,99]

[63,131,150,218,293,312,37]

[337,20,88,107,182,201,269]

第1层

[41,60,128,154,222,290,309]

[273,341,17,85,111,179,198]

[155,230,249,317,49,68,136]

[93,119,187,206,274,300,25]

[325,1,76,144,163,238,257]

[214,282,308,33,52,120,195]

[103,171,239,265,333,9,84]

第2层

[192,211,286,305,30,56,124]

[81,100,175,243,262,330,13]

[313,38,57,132,151,219,294]

[202,270,338,21,89,108,176]

[140,159,227,246,321,46,65]

[22,97,116,184,210,278,297]

[254,329,5,73,141,167,235]

第3层

[301,26,94,113,188,207,275]

[232,258,326,2,77,145,164]

[121,196,215,283,302,34,53]

[10,78,104,172,240,266,334]

[291,310,42,61,129,148,223]

[180,199,267,342,18,86,112]

[69,137,156,231,250,318,43]

第4层

[109,177,203,271,339,15,90]

[47,66,134,160,228,247,322]

[279,298,23,98,117,185,204]

[168,236,255,323,6,74,142]

[50,125,193,212,287,306,31]

[331,14,82,101,169,244,263]

[220,288,314,39,58,133,152]

第5层

[260,335,11,79,105,173,241]

[149,224,292,311,36,62,130]

[87,106,181,200,268,343,19]

[319,44,70,138,157,225,251]

[208,276,295,27,95,114,189]

[146,165,233,259,327,3,71]

[35,54,122,190,216,284,303]

第6层

[75,143,162,237,256,324,7]

[307,32,51,126,194,213,281]

[245,264,332,8,83,102,170]

[127,153,221,289,315,40,59]

[16,91,110,178,197,272,340]

[248,316,48,67,135,161,229]

[186,205,280,299,24,92,118]

isMagicCube 检查

经检查,行的和都是相等的

经检查,列的和都是相等的

经检查,深的和都是相等的

前视图的各条对角线的和相等

左视图的各条对角线的和相等

俯视图的各条对角线的和相等

经检查,主对角线和是相等的

经检查,辅对角线row和是相等的

经检查,辅对角线col和是相等的

经检查,辅对角线deep和是相等的

*/

/*

这个幻立方的牛B之处还不止这些,看看齐鲁晚报上是怎么说的

“这个七阶幻立方的主视图的七层,每层都是完美的。也就是说,每层的七行、七列、十四个斜行的七数之和都是幻和1204。而且第四层还是中心对称的,中心数是172,所有对称的两数之和都是344。

这个幻立方的整体也是中心对称的。”

*/

幻立方解法之7阶幻立方的生成方法相关推荐

  1. 幻立方解法之151阶

    //测试方法 func testCreateCube151(){ println("开始生成151阶幻立方:\(NSDate())") let cube151 = createCu ...

  2. 幻立方解法之4阶,5阶,7阶

    /*接上一篇 准备工作都做好了,现在来看看百度上提供的这个4阶幻立方到底完美不完美 http://baike.baidu.com/link?url=2soOQvIeehXTDdFXctT3GPrkqQ ...

  3. 幻立方解法之7阶延展

    /*接上篇 既然按照这个规则可生成完美幻立方,那如果改变下起点位置,是否也能生成幻立方呢 */ func findAPerfectCube7(){ let step = 7 for var deep ...

  4. 幻立方解法之暴力求解

    //疯狂查找 /* 对step阶的立方,按照各种起点,各种跳步方法逐一检验 */ func CrazyFindPerfectCube(step:Int){ func enumInitPoint(#st ...

  5. python list大小_4个python常用高阶函数的使用方法

    1.map Python内建了map()函数,map()函数接受两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每一个元素上,并把结果作为新的Iterator返回. 举 ...

  6. 三维立体电视图像生成方法

    三维立体电视越来越受到人们的重视,不少商家也推出了一些相关产品.那这些究竟是怎么做出来的呢?作者就接触过的知识点,在这里向大家浅薄的介绍一二. 一 国内外研究现状 三维立体电视,最好的方式是用两台摄像 ...

  7. CNN可视化又添新作,南大开源Group-CAM:高效的显著图生成方法|CVPR2021

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨孙裕道 审稿丨邓富城 编辑丨极市平台 导读 最近南京大学的一篇论文收录于CVPR2021,该论文 ...

  8. UUID介绍与生成方法

    什么是UUID? UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符.UUID具有以下涵义: 经由一定的算法 ...

  9. Extjs4.0 开发笔记-desktop开始菜单动态生成方法

    desktop开始菜单动态生成方法: Desktop.html中,在<scripts>中的Ext.onReady之前添加如下: var mArr = [];//这里是保存显示模块的数组va ...

最新文章

  1. hive中时间操作(一)
  2. .Net 2.0 事件机制,更简化了...
  3. 得到文件的服务器路径,如何获取服务器上的路径?
  4. Expressions are not allowed at the top level
  5. 关于这周工作中遇到的关于缓存问题的记录
  6. 如何取得用户参数文件中的parameters
  7. 用一个按钮做主窗口,可以吗?
  8. Java面试题整理,docker可视化监控工具
  9. 在树莓派2上折腾kali2.0小记(1)
  10. 创意促销海报设计思路,年底忙的设计师来看!
  11. 20-21-2网络管理quiz4
  12. 自制 Chrome Custom.css 设置网页字体为微软雅黑扩展
  13. 品优影视源码 带会员中心+卡密系统
  14. COMSOL激光烧蚀仿真模型
  15. 【第二周】吴恩达团队AI for Medical Diagnosis大作业
  16. Crout分解法 | matlab
  17. 基于labview的虚拟示波器
  18. Module containing this breakpoint has not yet loaded or the breakpoint address not be obtained
  19. 关于图片的像素,dpi与实际尺寸的关系
  20. 远程计算机强迫关闭一个连接,远程主机强迫关闭了一个现有的连接。

热门文章

  1. 微信小程序、小游戏盒子(市场)的制作
  2. 辅助驾驶功能开发-功能规范篇(06)-智能远光大灯HMA
  3. Pomer Flex J2EE (Flex+BlazeDS+Hibernate + spring )框架
  4. oracle调整尾数,word数据类型
  5. unity串口 连接多个串口崩溃_7个经典问答!10分钟带你了解串口服务器(RS232,RS485,RS422)...
  6. 「万向区块链专家观点」深度解析“区块链+物联网”与新基建
  7. 专业高手如何快速看盘(转贴)
  8. 【华为机试真题 Python实现】免单统计
  9. crmeb多商户二开crmeb多商户授权失败
  10. setMonth()