在假期里,我的家人喜欢玩 Boggle。问题是,我在 Boggle 上很糟糕。所以我做了任何优秀程序员都会做的事:写一个程序来为我玩。
该算法的核心是一个简单的前缀树,其中每个节点都是dict
对下一个字母的引用。
这是trie:add
实现:
添加([],特里)-> dict:store(stop, true, Trie); 添加([Ch|Rest],特里)-> % setdefault(键,默认值,字典)-> % case dict:find(Key, Dict) of % { ok, Val } -> { 字典, Val } % 错误 -> { dict:new(), Default } % 结尾。 { NewTrie, SubTrie } = setdefault(Ch, dict:new(), Trie), NewSubTrie = add(Rest, SubTrie), 字典:商店(Ch,NewSubTrie,NewTrie)。
您可以在此处查看其余部分以及如何使用它的示例(在底部):
现在,这是我在 Erlang 中的第一个严肃程序,我知道它可能有很多问题……但我最关心的是它使用了800 MB 的 RAM。
那么,我做错了什么?我怎样才能让它少一点错误呢?