先留下一句开场白:
其实我们都错了。 怎么错了?错在我们对六轴四阶正八面体的魔方认识有了偏差,盲目地认为它是一个四阶魔方,用处理四阶魔方的笨办法去还原,自己给自己找了一系列的麻烦。
————————————————————我是感恩的分割线————————————————————
本帖于2010/10/14进行了较大幅度的重新编辑,主要因为得到乌木老师的四阶魔方表示的好方法,在此首先向乌木老师表示感谢,现在我提供的四阶Java演示均为乌木老师的想法提示下实现的,希望所有依靠Java演示理解了我的解法的朋友也抱有对乌木老师感恩的想法。
————————————————————我是悲催的分割线————————————————————
正文开始: 六轴四阶正八面体(以下简称“648”)是一个让人很纠结的魔方,拿起来只要简单分析就能搞明白它的结构——四阶而已,感觉没有什么难度,但是玩起来简直是要命,我曾经在还原它的过程中走过两次弯路,不过最近偶然发现了一个处理的方法,拿出来跟大家共享。
首先分析一下这个魔方的特点:
1。六轴四阶结构——相信大家都认识到了。
2。八个面可以自由交换组合,且均可认为是还原态——虽然是废话,但是后面我的还原方法依靠的就是它。
3。不打乱每个同颜色面的前提下,可以认为它是一个无打乱态的二阶魔方(可以参考Meffert有一款PyraDiamond)。
参考图片:PyraDiamond
4。中心不以“同色”为还原态。
5。棱块还原是也无参照。
这些特点,特别是1、4、5三条引导了我还原它走向弯路。
按照前面的特点总结,以及乌木老师设计的借助四阶魔方表示648的实际例子,我们可以把这个魔方假想成如下形式(Java):
需要先解释一下:因为Java基本程序只提供基本的6色配色和无配色的灰,也就是说我们只能用他显示七种颜色,暂时无法完全还原全部魔方,此Java中的灰色请想象为两种不同的颜色。
先说说我走过的弯路吧:
我走过的第一条弯路是咱们玩四阶常用的降阶法(与子砍的教程基本相同)。六个尖角实际上是每个面的中心,还原则是需要进行四色组合,还要去分别分配——这样尝试过的朋友肯定跟我一样曾经发疯,甚至边转边标记边骂街——实在是无法分辨!
使用降阶法可能还原,也可能遇到特殊情况(如对棱换)导致中心再度被打乱。
我走过的第二条弯路是一个自己总结的方法,这个方法类似三阶层先(与林海的教程基本相同)。在普通四阶上面我能够顺利完成还原,但是在这上面也面对着最后一层无法处理的情况。
其实这两种方式都是能够最终还原整个魔方的,而且即使遇到中心被再度打乱的情况,也可以使用中心块交换的公式进行处理。不过这两个方法的缺陷在于观察的难度较大,而且相同可互换的块较多,容易影响还原过程。
下面隆重推出我的“面先”解法!
既然叫做“面先”,顾名思义,就是按照同色的每一个面进行还原。这种方法的优点是观察过程只需要寻找相同颜色完成每一个面即可,因为免去了拼中心、拼棱需要用不同颜色进行组合无法观察的困难,因此更有利于整个魔方的还原。
首先解释一下“面先”,所谓面先就是依次完成每一个面的同色,过程则是利用魔方的单层旋转,用中心去拼和周围的棱块角块,从而完成一个面。
那么先规定一下名称吧。因为我这个面先法可以完全摆脱四阶魔方的思路,所以我们按照每一个面去取名,每个面正中间的小三角为中心,梯形的边为棱,类似菱形的四边形为角。
看图:
那么也应该把我现在定义的块名称和传统四阶的关系进行介绍:
648的中心=四阶的角,648的棱=四阶的棱,648的角=四阶的中心,理解这个关系继续看Java就容易了。
面先法的基本思路其实很简单,每个面,用中心拼一个棱,再用“中心+棱”拼“棱+角”,之后用“小三角”拼“整条”。
看图:
第一步 中心 拼 棱:
Java体现: 第二步 中心+棱 拼 棱+角:
Java体现: 第三步 小三角 拼 整条:
Java体现: 这个步骤想要公式?抱歉我实在拿不出来,不过理解起来并没什么难度吧?看图就能明白。
就这么一个简单的拼面,处理,就能够处理好整个648。
按照648的结构特点和前面的拼面过程,我们可以理解,所有的旋转都集中在顶层,也就是说我们可以很轻松地完成四个面并归总到下半部分。
继续还原就需要不影响下半部分已经还原好的内容了,那么现在推出我特别喜欢的单翻角公式——“上上下下上上下下”:
以需要翻色的黄色块所在的垂直方向的棱为参照,分别在这个块的另两个维度进行旋转,让参照棱起到“上上下下上上下下”的运动,就可以翻过一个角块的方向。
在魔方还原过程中使用这个公式需要三循环或者镜像,不过在这个无打乱态的二阶魔方上面就不用担心破坏之前的部分了,所以可以单独用。
(乌木老师把这个公式叫“1/2”或“1/3”公式,在这个无打乱态的二阶上面则可以作为独立的公式使用。)
这个单翻角的公式用在648上面,起到的作用是将某个面进行旋转,看图:
↓
进一步的理解就简单了吧?利用这个单翻角公式将上层的某一个或几个面进行旋转,通过顶层的进退旋转去凑齐每一个面的组合过程,反复操作就可以还原整个魔方了。
给出一个完整步骤的Java演示,我们可以理解这是还原648的最后一步:
只要跳出了对四阶魔方的固有思路,用全新的角度去考虑还原的过程,就能够顺利地还原。
后记:用这个方式在四阶上进行了尝试,出现了特殊情况,主要原因是因为在八面体上,每个面的棱角(对应四阶的棱和中心快)都是可互换的,但是在四阶上这些块明显不同,所以需要另行交换。
用这个方法在普通四阶上出现的特殊情况:
在648上,这样的特殊情况是看不出来的,这就是648能够使用这个面先还原法的原因。
我这个面先法最大的优势还是观察上的简化,至少可以直接按照颜色去处理每一个面,虽然操作比较繁琐,但是我有信心用这个方法PK降阶和层先——毕竟观察毫无难度,而且可以规避特殊情况的出现。
————————————————————一条需要引发我们思考的分割线————————————————————
写到最后,想提出一个值得探讨的问题:我们玩魔方到底在追求什么?
目前绝大多数人在追求复原魔方的速度,但是在我看来盲目追求速度在很大程度上是把魔方变成了死记硬背+傻练。也许追求速度的朋友也在享受这种乐趣,但是无形中把魔方的“智慧”特点抹煞了。
同样是这个648,用降阶法当四阶玩除了观察麻烦之外毫无创新,用层先法也不过是旧瓶装新酒而已,前人的公式、前人的方法,搁在最后不过是鹦鹉学舌式地照搬,失去了创新和发展。
我更喜欢面对一个魔方的时候自己研究它的解法,这样才是把魔方这个“智力玩具”的智慧特色体现出来,开阔自己的思路,发现更好的方法,我认为这才是玩魔方的乐趣。
希望我的这个解法能够引发各位的思考,让更多人去开阔自己的思路,找出更好的方法。
截至目前我还没有发现使用我这个面先法会遇到无法处理的特殊情况,如果谁有无法解决的特殊情况欢迎跟我反映,习惯性地留个QQ:66489。
P.S.:昨天晚上是不是mf8故障了,我断断续续一晚上都没把图片传完!
[ 本帖最后由 耗子哥哥 于 2011-6-28 10:28 编辑 ] |