30
如何从字母矩阵中找到可能的单词列表[Boggle Solver]
最近,我一直在iPhone上玩一个名为Scramble的游戏。你们中有些人可能将此游戏称为Boggle。本质上,当游戏开始时,您会得到一个字母矩阵,如下所示: F X I E A M L O E W B X A S T U 游戏的目标是找到尽可能多的单词,这些单词可以通过将字母链接在一起来形成。您可以从任何字母开始,并且包围它的所有字母都是公平的游戏,然后转到下一个字母时,包围该字母的所有字母都是公平的游戏,除了任何以前使用的字母。因此在上面的网格,例如,我能想出的话LOB,TUX,SEA,FAME,等词必须至少有3个字符,并且不超过N×N个字符,这将是本场比赛16,但可以在一些实现改变。尽管这款游戏既有趣又令人上瘾,但我显然并不擅长于此,我想通过编写一个程序来欺骗我一点,该程序可以给我最好的单词(单词越长,您获得的积分就越多)。 (来源:boggled.org) 不幸的是,我对算法或其效率等不是很好。我的第一次尝试是使用诸如此类的字典(〜2.3MB),并进行线性搜索以尝试将组合与字典条目匹配。这需要非常长时间才能找到可能的单词,并且由于您每轮只有2分钟的时间,因此这根本不够用。 我很想看看是否有任何Stackoverflowers可以提出更有效的解决方案。我主要在寻找使用Big 3 P的解决方案:Python,PHP和Perl,尽管Java或C ++的任何功能也很酷,因为速度是必不可少的。 当前解决方案: 亚当·罗森菲尔德(Adam Rosenfield),Python,约20秒 John Fouhy,Python,大约3秒 Kent Fredric,Perl,〜1秒 Darius Bacon,Python,〜1秒 rvarcher,VB.NET (实时链接), Paolo Bergantino,PHP (实时链接),〜5s(本地〜2s)