六面异色正方体的24种放置方法

一阶魔方就是一个六面异色正方体,它有多少种放置方法?
首先,着地的面有六种情况。然后,固定着地面之后,前左右后四个面任意一个面都可以朝前,所以有24种防止方法。
相当于有24个结点的一个图,每个结点相当于一个状态.每个状态可以通过将最前面的这个面向上,向下,向左,向右旋转得到其他状态.即每个结点有4个邻结点.
于是给你出一道题,构造一个24个结点的图,使图中每个结点都与其它另外4个结点相邻.
这样的图是否唯一?
24个结点状态转移不一定通过4条边,也可能通过2条边.即向下,向右两种操作足以衍生出这4种操作.也就是说,在这向上下左右旋转四种操作这个集合有所冗余.它的原子操作是向右向下.向左旋转一次等价与向右旋转三次。
一个小正方体,各面异色。怎样描述这个正方体的状态呢?
只需要描述这个正方体红色面、蓝色面的朝向就可以了。
称这种状态描述法为x-y描述法。
这个小正方体有多少种状态呢?
红色有6种,每种红色固定后,蓝色有4种变化。所以共有24种状态。 状态之间是如何相互装换的呢?
每个状态结点有2个邻居结点:正对着你的这个面向下转和向右转,这是最小操作集。最大操作集是4:正对着你的这个面上下左右转动。
如何表示一个状态?法一用两个0-6之间的数字表示;法二用一个0-24之间的整数表示,x/6和x%6表示红面和蓝面所在的面的编号.

魔方整体旋转的位置

当向下旋转时,每一个小正方体都要发生位置改变,改变的是x-z平面,y坐标不变.
(x,y,z)变为(n-1-z,y,x),相当于左旋操作1
当向右旋转时,每一个小正方体都要发生位置改变,改变的是x-y平面,z坐标不变.
(x,y,z)变为(y,n-1-x,z),相当于下旋操作2

魔方后左下旋转时位置变化

n阶魔方: 当后旋时,op=0
(x,y,z)->(x,n-1-z,y)
当左旋时,op=1
(x,y,z)->(z,y,n-1-x)
当下旋时,op=2
(x,y,z)->(n-1-y,x,z)

魔方整体旋转的状态

当向下旋转,op=0时,y方向守恒,x和z方向交换
2->0
1->1
0->2
当向右旋转时,op=1时,z方向守恒,x和y方向交换
0->1
1->0
2->2,
也就是给定6个点求一个表达式newState=f(op,oldState)

opoldstatenewstate
020
011
002
101
110
122
即为newState=(5-op-state)%3

魔方后左下操作状态改变

当后旋时,op=0
0->0
1->2
2->1
当左旋时,op=1
0->2
1->1
2->0
当下旋时,op=2
0->1
1->0
2->2
即为newState=(6-op-state)%3

魔方整体操作和旋转操作之后的化简

魔方整体操作和旋转操作混合的序列形如:D后后2R左左
其中D表示向下,R表示向右
给定一个带有整体操作的操作序列,化简它的目的就是把全部D,R消掉,只剩下标准操作。
化简的原则如下:

{"D后(\\d*)", "下$1D"},
{"D左(\\d*)", "左$1D"},
{"D下(\\d*)", "后(N-$1)DR"},
{"R后(\\d*)", "左(N-$1)DDDR"},
{"R左(\\d*)", "后$1R"},
{"R下(\\d*)", "下$1R"},
{"[RD]*$", ""},
{"[RD]*", "simplify"}//对若干个RD执行化简操作

整个过程就像上下文无关文法逐渐推导一样,最终直到无法化简为止。