我想找到一种生成填字游戏的有效方法。我已经阅读了here提到的解决方案。这会生成一个简单的填字游戏,因为我正在寻找一种有效且优化的方法来生成像New York times中的填字游戏。即,当你将拼图旋转180度时,它看起来是一样的(黑色方块保持在同一位置)。在这里,我们可以假设网格最初是生成的,我们可以使用任何超过三个字母的单词。
这样做的最佳方法是什么?我们可以使用哪种搜索算法来减少迭代次数并减少耗时?
答案 0 :(得分:0)
我从另一个角度为另一个(未完成的)文字游戏解决了这个问题。在我的设计中,如果可以在X轴或Y轴(或两者)上镜像,则选择板。
取一个大小为N的正方形,我使用一个位掩码建立所有可能的网格,取 2 ^ cell count -1 作为最大值。因此,对于网格2x2(4个单元格),请从0 ... 15开始。
0 - 空格子
1 - 左上角的黑色块
2 - 右上角的黑色块
3 - 顶行的黑色块
15 - 网格充满黑色块
显然,这会产生许多不合适的候选人。我们可以放弃:
我认为我将其运行到大约7x7并且在合理的时间内完成。我没有做到的是选择单词。但是,一旦您对数字进行了碾压,您只需存储每个网格大小的所有候选值,然后每次只创建新的填字游戏。
(*) - 对于我写的游戏,这很重要,但我并非100%确定这是填字游戏的要求。在电路板的各个部分上有两个或更多不同的白色方块图案(但这是配置的)我可以认为完全有效。