有没有人有任何想法,链接或算法来解决PHP和MySQL的字谜。如果有人有一个好的英语词典,也会受到赞赏。
我希望实现类似的目标:
http://www.ssynth.co.uk/~gay/anagram.html
这家伙解释他是如何在这里做的http://www.ssynth.co.uk/~gay/anagabout.html ......从他说的语言来看,像PHP这样的语言可能不合适......会不会有问题?
谢谢..
答案 0 :(得分:1)
他说的是像PHP这样的语言可能不适合
你如何从他发表的细节中得到这个?
如果有人有一本好的英语词典......
pspell extension中有一个虽然考虑到所提算法的性质,但将大部分逻辑(和字典)推入数据库可能更有效 - IIRC pspell使用自定义格式,尽管是{{} 3}}
答案 1 :(得分:1)
你可能想查看Xavier的Anagram Solver。它是用PHP和MYSQL编写的。 有一个演示:http://anagram.savjee.be/
源代码位于:https://github.com/Savjee/Xavier-s-Anagram-Solver 这很容易理解。
答案 2 :(得分:0)
Pablo建议的算法到底出了什么问题?我打算提出同样的建议;)
如果我有一个带有列的表,该怎么办? 'word'(例如cat),'length'(例如3)和 A-Z(例如c = 1a = 1t = 1)。那样的 anagram'atc'我可以做一个类似的查询 'SELECT word FROM dictionary WHERE c < = 1 AND a< = 1 AND t< = 1 AND长度 < = 3'并且它将返回cat
请将他的评论重新定向(如果有的话)。
还有一个类似的问题:Algorithm to generate anagrams
您还需要查看Google: http://www.google.ru/search?q=anagram+solving+algorithms&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox
答案 3 :(得分:0)
我会有一个表{letter} {word} {count},并且对于每个单词,将它与每个单词的组成字母一起存储,以及字母出现在单词中的次数。然后搜索字谜开始于搜索一组字母,并找到每个字母所关联的单词组之间的交集。例如
输入:老鼠 表:
T tar 1
A tar 1
R tar 1
C cat 1
A cat 1
T cat 1
C car 1
A car 1
R car 1
每个字母的结果
R car tar
A cat car tar
T cat tar
然后用交叉点加入每个查询!
答案 4 :(得分:0)
您可以使用Trie datastructure循环遍历字符序列的每个组合(如果没有子节点,显然会停止当前节点)。
这将以相当有效的方式生成所有可能解决方案的完整列表。由于起始字符集有限,我认为它会很好用。
在每个节点,您可以选择匹配单词的数量,当它足够小时,将其加载到数组中进行比较,这样您就不需要运行一百万次选择。
答案 5 :(得分:-2)
从您的链接...
将所有单词存储在树形结构中
数据库在存储这样的分层数据方面非常糟糕,因此我不建议使用MySQL。你可能能够用索引和LIKE子句做一些“聪明”的事情,但我希望这是相当的kludgey。
PHP拥有您为此编码所需的一切,但可能有更好的选择。 Perl以其进行文本操作的能力而闻名。我不确定脚本语言如Python或Ruby。