不看公式自己复原魔方

来源:互联网 发布:建筑电气常用数据手册 编辑:程序博客网 时间:2024/04/29 21:16

       2、3阶完成

        网上很容易找到魔方公式,所以复原魔方已经变成了一种记忆,而不再试游戏,我感觉按公式复原魔方是一种玩法,快速复原魔方是一种乐趣。对我来说,自己复原魔方,这里面有另外的乐趣。看过《当幸福来敲门》,里面男主人公可以复原魔方,所以在我的印象中自己复原魔方应该是很难的,对我来说恐怕不大可能。但是又比较好奇自己能复原魔方的人是怎么做到的,于是在水木发了贴,有热心人士说了他们的心得,于是自己也想试一试,没想到自己做到了,希望有同样想法的朋友也可以自己试试,如果考虑几天还没有头绪,可以参考我的做法。

      对我来说,自己复原魔方就是寻找一些循环方块的公式,然后将其用在复原魔方中。下面所有公式都是实验出来的,通过一些简单的尝试很容易实验出来,对于高阶魔方,则根据需要移动位置的方块,进行尝试。下面是我复原各阶魔方的过程。
      为了方便自己试验,写了一个程序,点击下载源码

二阶魔方

第一层没有公式,自己复原,对于第二层:

交换两方块位置(不管颜色方向)

(RUF)5     FRU<->FRD并且FR颜色交换,UD颜色交换

(RUF)10 回原位

悬转3个方块角度

(RFU)4     FLU(rotate120) FRU(rotate120) FRD(rotate120)

(U'F'R')4   FLU(rotate240) FRU(rotate240) FRD(rotate240)

(RFU)12  回原位

三阶魔方:

复原8个角块

用二阶的方法可以复原3阶魔方8个角块

复原12条棱

可以交换3个边:

公式1:(RUUR'UU)5 交换FR UL UR(UR:R'   FR:RU2   UL:U2)

虽然不是一个面上的3个边,但是通过一系列操作,还是可以得到一些其它公式:

公式2:(RUUR'UU)5 (UUR'UUR)5 可以交换右边3个块RF、RB、RU,不改变角度,

公式3:(RUUR'UU)5 (UUF'UUF)5 (UURUUR')5 实现BU、FU、RU互换,并且FU、RU翻转角度

公式4:(RUUR'UU)5 (UUF'UUF)5 (UURUUR')5 (URRU'RR )5 (RRU'RRU)5 实现交换RU、BU两个棱块方向,位置不变

采用上面4个公式可以在8个角块对号的情况下复原所有棱块


四阶魔方

复原中心块

棱块两两配对

复原8个角块

复原11(12)个棱块

翻转最后一组棱


五阶魔方




旋转过程单个方块路径研究

首先严格按照前(F)蓝b后(B)绿g左(L)橙y右(R)红r上(U)黄y下(D)白w

定义8个角方块为

 FLU(0、1、2) FRU(3、4、5) FLD(6、7、8) FRD(9、10、11) BLU(12、13、14) BRU (15、16、17)BLD(18、19、20) BRD(21、22、23)

定义12个棱方块为  

FL(0、1) FU(2、3) FR(4、5) FD(6、7)  BL(8、9) BU(10、11) BR(12、13) BD(14、15) LU(16、17) RU(18、19) LD(20、21) RD(22、23)

每一个方块的复原包括移动与旋转,其中角方块旋转可能为0、120、240,棱方块旋转可能为0、180

以FLU为例,其初始位置可能位于8个位置之一,要将其复原,首先需要将其位置调整正确,然后角度调整正确

首先调整位置

FLU    不动

FRU    U    F'    3种初始方向有2种可以直接复原不再需要调整角度

FLD    L'    F     3种初始方向有2种可以直接复原不再需要调整角度

FRD   F2

BLU   U'   L     3种初始方向有2种可以直接复原不再需要调整角度

BRU   U2

BLD   L2

BRD BU2 B'L2 RF2 R'U2 DL2 D'F2

然后调整角度

可能需要旋转0、120、240°。


下面考虑各种情况下FLU方块的复原,共8*3种情况

这里方块标记不止要有位置记号,还要有颜色记号,目标为FbLoUy

每一列表示初始位置

每一行表示不同的朝向

每一格第一样表示颜色,括号中数字表示最少还原步数

由于比较多,而且没有认真校对,下表可能有错误,最重要的是思路

 FLUFRUFLDFRDBLUBRUBLDBRD1boy(0)
--oby(1)
Ubyo(1)
Fboy(2)
F2byo(3)
B'U2
BL2
L2F
U2F'boy(2)
U2boy(2)
F2yob(3)
B2L
R'U2
D'L'2ybo(2)
F'L'
L'U'
U'F'yob(3)
RU2
R'F2
U2L
F2L'oby(3)
F2U
L2U'
DF2
D'L2ybo(2)
FL'
RU
D'Foby(1)
U'ybo
BL
R'U
UF'ybo
B'L
LU'
DFoby
B2U'
R2U
U'F2
UL23oyb(2)
FU
LF
ULbyo(1)
F'yob(1)
L'oyb(2)
F'U
RF'
D'L'yob(1)
Loyb
BU'
R'F'
U'Loyb
B'U'
L'F
DL'byo
BU2
R2F'
D2F

上表8种情况可以分为4类:

FLU                         不动或2步还原

FRU,FLD,BLU      一步或3步还原

FRD,BRU,BLD    2步还原

BRD                       3步还原


下面就需要看各种动作组合的效果了,从简单的开始

RUR'U'    FRU FRD BLU BRU有动作

FRU->FRD  F

FRD->FRU  R

BLU->BRU  U

BRU->BLU  B

有4个方块改变,下一步动作,让改变方块减少为3个,

R'B'RBR,此时

FRU->BRD  U'B'

BRD->FRD  U'

FRD->FRU  R

这种方法可以改变一层的3个方块,不知道可不可以转出所有可能状态,现在需要一种标记,标记一层4个角块位置与转向,假设这4个方块位于顶层,LF1 LB2 RB3 RF4,转向为0、120、240,分别表示绕定点法向顺时针转动角度

那么目的就是1(0) 2(0) 3(0) 4(0)

至少有一个方块位置是正确的,那么所有的可能就是3!*4*3=72,而且很多种情况时不可能的,比如只转一个角120或240°

现在的问题是上面的转法(或者叫做公式)可以转出多少种,有多少种是合理但是用这个转法转不出来的

观察现在的魔方,一个角位置与方向正确,其它3个角位置逆时针旋转,角度分别转了0、120、240。

那么执行转动一次以后是4(0) 2(0) 1(120) 3(240)

转动一次以后是2(0) 3(0) 4(0) 1(0)



为了方便自己试验,写了一个程序,点击下载源码
原创粉丝点击