几天看到一个博友写的二维拼图的程序(python游戏开发实战:三阶拼图),讨论到二维拼图可能无解。
二维拼图是一个比较经典的游戏,其实这个我开始没有太注意这个问题,博友提出我就想了一下。
先做一波分析:
其实在这个规则的拼图过程中,最小运动单元是2×2,最后的空缺一般设在右下角,所以右下角的自由度最大。
在 右下角 之外 的都是可以自由拼接的,一般拼图是从左上角先下手,熏熏渐近的向右下角逼近。
所以拼图是否有解,最终落在最后右下角的2×2的顺序是否是正解。
如上3×3的阵列中,最后就是看右下角最后是否能够拼出:
我推了一下,其实最后就是看6和8相对于5的位置。如果逆时针为658的循环,那应该就可以,如果是856就无解。
但是568如果不在最后几格,在其他的地方,其实推算起来相对就比较复杂了。不过在这个基础上应该还是可以推算。
好了,就是即时起兴而已,先就这样了,如果有兴趣,欢迎交流,和进一步讨论。