Overview
各种俄罗斯方块拼图很烦人。我写了一个小程序来解决这个问题。是个很粗糙的程序。
正文
这是一个很有趣的解谜游戏。
但是游戏中的俄罗斯方块拼版到了游戏的中后期就会变成力气活。
所以我写了{LINK REMOVED}一个简陋的小程序来解决这个麻烦。
它看起来大概是这个样子:
看不懂怎么用的话我稍稍解释一下。
1.双击TetrisPuzzle.exe启动一个命令行程序。
2.输入拼版的行数和列数,格式是:行数 列数。然后回车。
3.输入第一种俄罗斯方块的类型编号和数量,格式是:类型编号 个数。然后回车。
额,类型编号和形状的对应关系如下(你们这么聪明一定看得懂!):
比如L型的俄罗斯方块有3块,就输入“3 3”.
4.继续输入其它的俄罗斯方块,直到全部输入完毕。
5.输入-1,回车。
然后程序会思考一小会儿给出一个最容易找到的答案。然后继续搜索所有可能的答案。如果你并不感兴趣,关掉这个程序就可以了。
举例说明。
比如下面这块板(这是我从别人的帖子里盗的图):
它是8行5列的,所以先输入8 5然后回车。
有两个1号方块,输入1 2,回车。
有一个2号方块,输入2 1,回车。
以此类推,全部输入像是这样:
8 5
7 2
6 2
5 1
3 2
2 1
1 2
-1
然后不到一分钟的时间,程序会给出最容易找到的答案。
77755
37755
37771
33111
61116
61226
62236
63336
这些数字就对应了形状在拼版上的位置。
🙂
我放到了百度网盘上:
{LINK REMOVED}http://pan.baidu.com/s/1kUbuhQf
{LINK REMOVED}http://pan.baidu.com/s/1i4l7HfJ
我自己使用的过程中发现了bug。所以原来的删掉不能用了。更新了解决掉bug的版本。
1.1版改动:
1. 改善了内存使用的情况,略微提升性能。
2. 去除了存在多个相同形状时的重复尝试,显著提升了的性能。
但是因为对于12片的puzzle仍然要1分钟左右的时间才能出第一个结果,所以对于大家没有什么实际意义。所以没有发布出来。
1.2版改动:
1. 改善了内存使用的情况,略微提升性能。
2. 去除了对某些明显不可能的情况的尝试,显著提升了性能。
3. 增加了计时功能。
4. 改善了第一屏的排版,让所有提示都能在一屏之内显示完。
1.1版完成之后我在Google上试图寻找更快的解法。结果找到了dosse91的网站[adolfintel.com]。用过之后我觉得他的程序非常快。解决12块的puzzle时立即能得到结果。所以我觉得肯定还有其它的剪枝方法。然后我就想到了1.2版中去除对那些明显不可能情况的尝试的办法。看了dosse91的源码之后发现我们的想法不谋而合。
1.2版在这里下载:
{LINK REMOVED}http://pan.baidu.com/s/1pK2WQKz