生成填字游戏的算法
给定单词列表,您将如何将它们排列为填字游戏网格?
它不必像对称的或类似的“正确的”填字游戏一样:基本上只是输出每个单词的起始位置和方向。
回答:
我想出了一个可能不是最有效的解决方案,但是它足够好用。基本上:
- 按长度排序所有单词,降序排列。
- 选择第一个单词并将其放在板上。
- 下一个词。
- 搜索黑板上已经存在的所有单词,并查看该单词是否存在任何可能的交集(任何常见字母)。
- 如果该单词可能存在,请遍历板上所有单词,然后检查新单词是否有干扰。
- 如果该单词没有破坏木板,则将其放在那儿,然后转到步骤3,否则,继续寻找位置(步骤4)。
- 继续此循环,直到所有单词都被放置或无法放置。
这使一个工作正常但通常很差的填字游戏。我对上面的基本配方进行了许多更改,以得出更好的结果。
- 在生成填字游戏的最后,根据放置的单词数(越多越好),木板的大小(越小越好)以及高度和宽度之间的比率(越近)为其打分。到1更好)。生成多个填字游戏,然后比较它们的得分并选择最佳的一个。
- 我决定不运行任意数量的迭代,而是决定在任意时间内创建尽可能多的填字游戏。如果您只有一个很小的单词列表,那么您将在5秒钟内得到数十个可能的填字游戏。较大的填字游戏只能从5-6种可能性中选择。
- 当放置一个新单词时,与其在找到可接受的位置后立即放置它,不如根据它增加网格大小和相交的数量给该单词位置打分(理想情况下,您希望每个单词都是越过2-3个其他字词)。跟踪所有位置及其得分,然后选择最佳位置。
以上是 生成填字游戏的算法 的全部内容, 来源链接: utcz.com/qa/425693.html