晚上一时兴起,打开久已蒙尘的switch游戏机,玩了会儿马里奥·奥赛德,真正的良心制作:
里面有一个智力关卡:
要求最终摆成下面样子:
上图中,戴帽子的石头是由玩家控制的,可以向上下左右滚动,但不能超过边线,也即只有八个方块可供闪转腾挪。如果石头向右滚动,左边的面会变成向上的面,上面的面会变成向右的面,问如何能把石头摆成对称?
解决此类脑筋急转弯类问题,一般都是有固定套路的:找出最最基本的条件,组合这些条件,就能得到答案。这个智力小游戏也是这样。
关键问题是,这个游戏的基本条件是什么?
先随便试试:
各种旋转之下,似乎就是跟平常的色子差不多,6个面的正方体。在最后一步之前不能旋转到目标位置上,有些像“华容道”。
———————————————————— 正经的分割线 ————————————————————
下面开始分析问题:
一开始看到这个游戏时,可能有些人第一反应是“找规律”,按一定规律进行旋转,便可以在最后转到目标方格内。但稍微想一下会发现,这个规律要求我们的大脑有强大的空间立体记忆能力,要分清6x4=24种情况(和色子一样,第一个面有6种可能,第二个面只有相邻的4种可能,剩下的面就能确定了),再分析每种情况的后续情况,对于人类平均记忆常数7来说,有些吃力了,所以找规律似乎并不是个明智的选择(如果您是天才,当我没说)。
找规律有些行不通了,那就从最基本的条件出发吧。首先,我们会看到,石块的起始状态和最终状态是一样的,那我们可以想一下,有哪些情况下,能使石块的初态和终态一致:
1. 沿着一个方向连续转动4次,石块将和初始状态一致,看图中情况,起始位置和终点位置没在一条直线上,所以这种情况不可能。
2. 右1下1右1下1右1下1(下右、右上、上右、左上、上左、左下、下左都可以),这种曲线转动,连续3次右下,也可以达到初始状态。
第2种情况因为是曲线,显然更符合目前情况,似乎是一条可行方案。但我们很快注意到:游戏中只有两排方格,也就是说,或上或下,是不能达到第3次的,这个矛盾只有两种可能:一是这套方案不可行,二是我们还差一点没发现。
按照服务端编程经验可知:3个右下折线返回原状态的情况,肯定是中间过程携带了状态,这个状态要被保持,不然将不能恢复初始状态。现在的问题是,如何保持这个状态?
我们顺着这个思路,右1下1,都是步长为1的旋转,那步长为2的旋转呢,步长为3的呢,步长为4的呢?步长为4首先不用考虑,因为步长为4已经恢复原始状态。步长为3的情况与步长为1的情况对称,所以只是步长为1情况的全反操作。现在只剩下