In den Ferien spielt meine Familie gerne Boggle. Das Problem ist, ich bin schrecklich in Boggle. Also tat ich, was jeder gute Programmierer tun würde: Er schrieb ein Programm, um für mich zu spielen.Erlang: Was ist am meisten falsch mit dieser Trie-Implementierung?
Im Kern des Algorithmus ist eine einfache prefix trie, wo jeder Knoten ist ein dict
der Verweise auf die nächsten Buchstaben.
Dies ist die trie:add
Umsetzung:
add([], Trie) -> dict:store(stop, true, Trie); add([Ch|Rest], Trie) -> % setdefault(Key, Default, Dict) -> % case dict:find(Key, Dict) of % { ok, Val } -> { Dict, Val } % error -> { dict:new(), Default } % end. { NewTrie, SubTrie } = setdefault(Ch, dict:new(), Trie), NewSubTrie = add(Rest, SubTrie), dict:store(Ch, NewSubTrie, NewTrie).
Und Sie den Rest sehen, zusammen mit einem Beispiel dafür, wie es (unten) verwendet wird, hier:
Nun, dies ist mein erstes ernstes Programm in Erlang, ich weiß, dass es wahrscheinlich eine Menge Dinge nicht stimmt ... Aber mein sofort Die Sorge ist, dass es 800 Megabyte RAM verwendet.
Also, was mache ich am meisten falsch? Und wie könnte ich es etwas weniger falsch machen?
Ha. Das habe ich vor ein paar Jahren in PHP gemacht. – gahooa
Wie groß ist Ihre Wortliste? – Zed
Meine Wortliste ist 200.000 Wörter (oder 2,5 MB). –