15puzzle solved by IDA*
滑块拼图游戏,共 15 个滑块,一个空位,滑块不能取下来,只能通过移动滑块到空位来改变位置,直到滑块按 1-15 、空位结束。
随机生成 15-PUZZLE 数码棋盘。
检查问题是不是有解。如果无解,输出无解。
如果有解,输出一个 .txt
文件。文件把解路径上的每张棋盘都按顺序输出。
或者,写一个带可视化界面的程序,在界面上动态展示解路径。
15 数码状态空间有16!,采用无信息搜索需要耗费大量时间, A* 算法需要维护 open 表和 close 表,以及排序选择最小代价的结点内存空间消耗过多,采用 IDA* 既节约时间,又减少空间占用(不用判重)。
4*曼哈顿距离/3
golang
,求解逻辑编写,提供接口及命令行模式js
+ html
+ css
,负责将结果以动画形式呈现首先需要本地搭建go环境,拉取代码
git clone https://github.com/imyhui/15puzzle.git
或者
go get -v github.com/imyhui/15puzzle
编译
cd 15puzzle
go build
运行
命令行模式
./15puzzle
正在求解...,详情见solve.txt
等待运行结束,查看 solve.txt
cat solve.txt
------------
|12| 3|14| 0|
| 9| 8| 4|10|
| 2|11| 5|13|
| 7| 6|15| 1|
-------------
[12 3 14 0 9 8 4 10 2 11 5 13 7 6 15 1]
该 puzzle 有解
解为: DLLLDRRRDLUUULLDRURRDDLULDLDRRUUULDRRDLLLDRRULURDLLURULDRDRDR
cost=[2.430521923s]
------------
|12| 3|14|10|
| 9| 8| 4| 0|
| 2|11| 5|13|
| 7| 6|15| 1|
-------------
------------
|12| 3|14|10|
| 9| 8| 0| 4|
| 2|11| 5|13|
| 7| 6|15| 1|
-------------
...
------------
| 1| 2| 3| 4|
| 5| 6| 7| 8|
| 9|10|11|12|
|13|14|15| 0|
-------------
服务模式
./15puzzle server