休暇中、私の家族はボグルをプレイするのが大好きです。問題は、私はボグルでひどいです。それで、私はどんな優れたプログラマーでもすることをしました:私のために遊ぶためのプログラムを書きました。
アルゴリズムの中核となるのは単純な接頭辞trieであり、各ノードはdict
次の文字への参照です。
これはtrie:add
実装です:
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} %エラー-> {dict:new()、デフォルト} % 終わり。 {NewTrie、SubTrie} = setdefault(Ch、dict:new()、Trie)、 NewSubTrie = add(Rest、SubTrie)、 dict:store(Ch、NewSubTrie、NewTrie)。
そして、残りの部分と、それがどのように使用されているかの例(下部)をここで見ることができます:
さて、これはErlangでの私の最初の本格的なプログラムであり、おそらくそれには多くの問題があることを知っています…しかし、私の当面の懸念は、800メガバイトのRAMを使用することです。
だから、私は何をしているのですか-間違っていますか?そして、どうすればそれを少し間違えないようにすることができますか?