用Mathematica求解华容道

关于华容道

华容道〈Klotski,来自波兰文的klocki,意为木块〉是一种滑块类游戏,由放在方形盘中的10块方片拼成,目标是在只滑动方块而不从棋盘中拿走的情况下,将最大的一块移到底部出口。流行于中国的华容道是由英国人John Harold Fleming在1932年所发明,然后本土化加上三国背景。国内国外都有一些华容道的爱好者研究者。

——维基百科

第一次玩这个游戏是在好多年前了,前几天从看到一篇用计算机求解华容道的文章,于是,喜欢 Mathematica 的我就开始折腾了……

写这个程序前前后后用了近一周的时间,其实是把很多时间浪费在修改数据格式上了,这一改数据格式就得改程序,反而最核心的搜索算法却没有修改,一直都是使用广度优先搜索。算了,以后再写其它搜索算法吧。

数据与程序

数据与程序都放在 GitHub 上了,算作是 Mathematica 开源项目的开始吧。

数据

数据是指开局与解。

412个开局数据来自:发芽网 。

解是用 Mathematica 计算出来的。

程序

程序分为两块,一是基本程序包与使用案例,二是游戏。

演示

游戏模式

game

求解:横刀立马

SolveHDLM

求解:自定义

SolveFree

其中“@”为固定方格,不可移动。

About the Author

野鹤

自由学者,爱好广泛,虽无一精通,却常乐在其中...

本博客已停止更新,请您移步到我的新博客阅读更多文章。