汽车华容道

前言:本文中的是微信小程序里面的汽车华容道。

汽车华容道应该是从三国华容道改造来的,比三国华容道简单很多。

三国华容道 https://blog.csdn.net/nameofcsdn/article/details/104597070 

目录

一,规则

二,全局策略——对齐法

三,全局策略——位置推导法

四,局部策略——关键车

五,全局策略——双时刻位置推导法

六,单点策略——口字形反转


一,规则

整个界面是6*6的格子组成的,车子有1*2的,1*3的,1*4的这几种,车子只能前后滑不能左右滑,目标车(唯一的红色车)在中间一行,移动车子,使得目标车移出去就胜利了。

PS:本文的策略都是在此规则的基础上表述的,别的华容道游戏可能略有区别。

二,全局策略——对齐法

有很多很多局面,都有不止1个1*3的车子,当目标车滑过时,他们就必须在下面,也就是右下角就是几个竖着的车子。

于是左下角就只能是几个横着的车子,其他的车子在上面。 

这样的一种状态,我称之为对齐状态

通过往这个方向靠近的操作实现最终胜利的方法,我称之为对齐法

对齐法简单归纳一下就是,先识别哪些车子要移上去,然后把这些车子移上去基本上就快胜利了。

下面给出一些关卡的开局状态和对齐状态:

   

   

   

   

   

   

   

   

三,全局策略——位置推导法

位置推导法就是,目标车从开始位置到最终位置,必有某个时刻位于中间的某个位置,以此为基础,一个个推出其他车子的位置。

举例来说:

当红车处于下图红框位置时,黄车只能在黄框位置。

进一步推出这3个黄车的位置:

进一步推出2个白车的位置:

其中画的比较丑的2个白圈表示,这个白车有2个可能的位置。

至此,可以说把每个车的位置都推出来了。

四,局部策略——关键车

使用位置推导法可以发现,对于大量的开局都有这样的一个规律:

存在这样的一个车,只要推导出它的目标位置,并把它移到这个位置,这一关就基本上胜利了。而且,在把它移到这个位置的过程中,不需要考虑其他任何车子,在把它移到这个位置之后,就不用再动了。这样,这个问题的复杂度就大大降低,不仅划分为2个子问题,而且格子的数量和车子的数量都有下降。

我把这个车子称为关键车。

寻找关键车的方法自然是一步步进行位置推导,但是关键车的选择标准是什么呢?

关键车选择原则一:评估每个车子到目标位置的距离,距离最大的车就是关键车。

这里的距离是综合考虑直观的几何距离和解空间的距离(即操作步数)得到的。

以前面这一关为例:

   

距离最大的是第一行的白车和第四列的黄车,但是,

在除第四列的黄车之外的车子都在或非常接近目标位置的情况下,第四列的黄车可直接往下移,

而在除第一行的白车之外的车子都在或非常接近目标位置的情况下,第一行的白车也无法往右移,因为被第三列的白车挡住了,所以第一行的白车就是关键车。

关键车选择原则一的补充:在考虑每个车子到目标位置的距离时,可假设其他车子都已在或者非常接近目标位置。

找到关键车之后,我们先把关键车移到目标位置:

然后迅速把第三列的白车归位:

至此,已经没有任何悬念了。

再来看看关键车选择原则一的补充:在考虑每个车子到目标位置的距离时,可假设其他车子都已在或者非常接近目标位置”,

这个思路还不够简洁,而且不够准确,于是我推出原则二来代替:

关键车选择原则二:如果距离目标位置的车子(不包括红车)数量超过1,根据这些车子移动到目标位置的过程之间的逻辑依赖性,找到需要第一个移到目标位置的车子,即为关键车。

举例来看:

按照位置推导法,找到目标位置:

这里的椭圆用来表示相邻的2个目标位置都是有可能的。

可以看出,距离目标位置较远的是2个车:第3列的白车和第5列的黄车。

进一步,很容易得到,一定是先把第3列的白车移上去,然后才能把第5列的黄车移下来,所以第3列的白车就是关键车。

先把第3列的白车移上去:

再把第5列的黄车移下来:

至此,已经没有任何悬念。

五,全局策略——双时刻位置推导法

这其实是对位置推导法的简单拓展,双时刻位置推导法就是,红车一定会从某个位置移到它右边相邻的位置,在这个过程中其他车子是不动的,也就是说这3个格子都必须被红车占据。

举例来说:

用位置推导法是推不出第2行的白车的位置的,但是用双时刻推导法:

红车一定会从左边的红框移到右边的红框:

可以推出此时其他车的位置:

所以关键车就是第2行的白车,移到左边之后就变成:

此时,继续分析,不难发现下一步就是要把第3列的车子移上去:

至此,已没有任何悬念。

六,单点策略——口字形反转

有时会碰到这样的局面:

稍微移动一下变成:

很明显,右边的中间四个车子形成了一个口字形,互相挡道,谁也挪不了。

口字形的破解方法是:看哪个车能后退到脱离这个口字形,把这个车后退,再把另外三个车移到他们的目标位置。无论什么情况下,都至少存在一个这样的车。

以上图为例,只有红车可以后退,所以先把红车后退,变成:

再把口字形的另外3个车子移到目标位置:

PS:其实第6列的黄车离目标位置还有一格差距,不过在不移动红车的情况下,只能做到这一步了。

此时,已经没有悬念了。

用这几个攻略,即可轻松全部通关:

   

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值