我正在制作一个类似字谜的文字游戏。给用户一个像这样的字母网格:
O V Z W X
S T A C K
Y R F L Q
用户使用任何相邻的字母链来挑选一个单词,例如中间行的单词“STACK”。然后使用的字母被机器替换,例如(小写的新字母):
O V Z W X
z e x o p
Y R F L Q
请注意,您现在可以使用新字母拼写“OVeRFLoW”。我的问题是:我可以使用什么算法来挑选新字母,以最大限度地增加用户可以拼写的长单词的数量?我希望游戏有趣并且有时会涉及拼写例如 6 个字母的单词,但是,如果您选择了糟糕的字母,游戏只会让用户拼写 3 个字母的单词,而没有机会找到更大的单词。
例如:
您可以从字母表中随机选择新字母。这效果不好。
同样,我发现随机选择但使用 Scrabble 中的字母频率效果不佳。我认为这在拼字游戏中效果更好,因为您对使用字母的顺序的限制较少。
我尝试了一组列表,每个列表代表 Boggle 游戏中的一个骰子,每个字母都会从随机骰子一侧挑选出来(我也想知道我是否可以在产品中合法地使用这些数据)。我没有注意到这运作良好。我想 Boggle 骰子的面是以某种明智的方式选择的,但我不知道这是怎么做的。
我考虑过的一些想法:
制作一个表格,说明字典中字母对一起出现的频率。为了争论起见,假设 E 在 30% 的时间出现在 A 旁边。When picking a new letter, I would randomly pick a letter based on the frequency of this letter occurring next to a randomly chosen adjacent letter on the grid. 例如,如果相邻字母是 E,则新字母将有 30% 的时间是“A”。这应该意味着有很多不错的对散布在地图上。我可以通过制作一个字母出现在其他两个字母之间的概率表来改进这一点。
以某种方式搜索当前网格上可以拼写的单词,将新字母作为通配符。然后我会用允许拼写最大单词的字母替换通配符。但是,我不确定您将如何有效地做到这一点。
任何其他想法表示赞赏。我想知道是否有解决这个问题的通用方法以及其他文字游戏使用什么。
编辑:感谢到目前为止的精彩回答!我忘了提一下,如果可能的话,我的目标是低内存/cpu 要求,我可能会使用 SOWPODS 字典(大约 250,000),我的网格将能够达到 6 x 6。