五千年(敝帚自珍)

主题:【文摘】+【原创】 怎样迅速拼好魔方的六面(层先法) -- 玫瑰灰

共:💬31 🌺100
全看分页树展 · 主题 跟帖
家园 【原创】第一层的还原(1.顶层十字-棱块)

万丈高楼平地起,咱们算法的第一步就是把魔方的第一层给搭起来。

按咱们之前在算法摘要里说的,这一步的最终目的,是让魔方呈现这么一个结构:

点看全图

外链图片需谨慎,可能会被源头改

然后再把整个魔方掉个个放着,让柠檬黄这面被压在底下。

(不好意思,只要不是引用Meissen原作中的图片,我自己画图的时候就会经常用到这种六面分解图。只好让大家努力习惯一下了)

再次着重的提醒:在旋转魔方的时候,请务必保持六种颜色中心面的相对位置不变!

除了在第一层拼完时需要把魔方整体转个圈以外,其他任何时候魔方的六个中心面的朝向都是永远不变的。

————————

咱们已经知道魔方六个面里,正中心那个小方块的相对位置是永远不会变化的。

那么,在拼第一层的时候(以柠檬黄这一面为例),其实就是找出这一面(3*3正方形)的沿边8个小柠檬黄片所在的小立方体各自在哪,然后把这些小立方体各自转到其正确的对应位置。

注意这个正确的对应位置是由两个因素决定的:

第一, 小立方体有柠檬黄的一面,且柠檬黄这一面得朝上;

第二, 小立方体朝侧面的色片必须与侧面那个中间片的颜色一致

只有这两条同时满足,才能说明这个小立方体放对了位置。

这8个小立方体中有4个棱块和4个角块,我们第一层的还原也是分别就这两者进行说明的。

——————————

(一)首层棱块的还原——架顶层十字

棱块有两个面,角块有三个面——相对来说更容易定位的显然是只有两个面的棱块。

于是咱们先看棱块的还原。

棱块的还原目标:

点看全图

外链图片需谨慎,可能会被源头改

可以看到,一个棱块被还原,意味着:

它对上的面为柠檬黄;且它对侧面的色块与该侧面的中心色块一致。

将一个棱块小立方体旋转到它应当在的位置,我们要做的事情,就是:

1. 找到这个小立方体现在在魔方的哪个位置(初始值)

2. 找到这个小立方体应该摆在那个位置(目标值)

3. 通过适当的旋转,把它转到我们希望摆上去的位置。

哈哈,这么说,有的人可能要问了,这不是跟打开冰箱-把大象放进去-关上冰箱一样么?

那,我们还是举个实际的例子来看看吧。

以柠檬黄-红这个棱块为例,咱们来试着还原一下它。

注意一下,在旋转的时候,我们必须考虑原来已经转好的块的现场保护,别把已经转好的块又给转飞了。

基于现场保护工作的难易程度,最坏情况下我们可以假设顶层的十字已经搭好了其它三个,就剩这最后一个棱块需要还原了。

目标值好办,我们都说了要找这个棱块了,

大家在期望目标的图里面肯定都能看到它最终需要放到的地方。

那么再来看几种棱块初始可能待的位置(初始值)。

咱分类来讲讲吧。

点看全图

外链图片需谨慎,可能会被源头改

这个组合图片里面,左上角是我们希望把柠檬黄-红棱块转到的位置。

右上角则是此时的现场环境中可能出现的最坏情况,所有其它三个棱块都已经转到位,旋转过程中需要保护它们不受影响。

那么,下方的四种情况,就基本上是我们在旋转棱块中最经常看到的四类情况了。

a)类是最容易复原的,前面那一个单面逆时针旋转90°(也就是手法公式中的F'),既不影响其它三个棱块,也不影响魔方的六个中心面相对位置。

b)类是比较容易出现的一种,操作方法其实跟a)类是一样的,只不过这回是旋转180°(也就是手法公式中的F2)。同样不会影响其它面。

之所以把这一类单独提出来说,因为只要棱块中的柠檬黄的一面出现在底面上,就可以通过旋转底面(视情况使用手法公式中的D,D'和D2)把它转化为这一类问题来解决。

c)类和d)类稍微麻烦一点。

咱们先说c)类型的解决办法。

反正只要一个F2操作,d)类型就能转化为c)类型。

解决掉c类型的操作,大致如下图所示。

点看全图

外链图片需谨慎,可能会被源头改

咱看得到c类型的特点,初始位置就在目标值的下面。

按说把中间这一竖层直接往上一转就到位置了——但是直接一转,那原本顶层十字里的中心片跟已经拼好的柠檬黄-橙棱块可也就跟着飞了。

于是我们想的法子就是:

先把棱块让到旁边的面去(底面横向转)

再让中间这一竖层转下来接它(中间层转)

然后把棱块转回中间来(底面横向反转)

最后,中间这一竖层转回去,就衣锦还乡的把咱们希望的柠檬黄-红棱块给带上去了。

同b)一样,c)类型不仅解决这种初始值在目标值正下方的,还可以通过底层的旋转(视情况使用手法公式中的D,D'和D2),把初始值在其他地方,但是类似位置的棱块转到c)的初始位置来,然后按法子解决。

注意到没有?以上的方法中,

我们始终使用的都是底层和没有还原的棱块那个目标侧面在旋转。

所涉及到的其他面,比如说中间的那一竖层,我们旋转下来又还原转了回去——除了被换上去的目标棱块以外,其余的面完全没有被影响到。

那么,按照上面的法子,肯定不会影响到其他已完成的棱块的。

一个个棱块搭完成,咱们的初步目标:第一层的棱块,也就是所谓的顶层十字,就完成了^0^

下一讲,我们接着讲第一层的角块,也就是顶层剩下的四个角上的小立方体的还原过程。

学有余力的同学,根据今天棱块的c)方法,应该也能触类旁通的想到如何转角块的——或者,耐心的等我把角块的图画出来也行^0^


本帖一共被 1 帖 引用 (帖内工具实现)
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河