छुट्टियों में, मेरे परिवार को बोगल खेलना अच्छा लगता है। समस्या यह है कि, मैं Boggle पर भयानक हूँ। तो मैंने किया कि कोई भी अच्छा प्रोग्रामर क्या करेगा: मेरे लिए खेलने के लिए एक कार्यक्रम लिखा था।एरलांग: इस त्रिभुज कार्यान्वयन के साथ सबसे गलत क्या है?
एल्गोरिदम के मूल में एक साधारण prefix trie है, जहां प्रत्येक नोड अगले अक्षरों के संदर्भों के dict
है।
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).
और आप आराम से देख सकते हैं, यह कैसे (नीचे) प्रयोग किया जाता है का एक उदाहरण के साथ-साथ यहाँ:
यह trie:add
कार्यान्वयन है
अब, यह एरलांग में मेरा पहला गंभीर कार्यक्रम है, मुझे पता है कि शायद इसमें कुछ चीजें गलत हैं ... लेकिन मेरा तत्काल ई चिंता यह है कि यह 800 मेगाबाइट रैम का उपयोग करता है।
तो, मैं सबसे गलत क्या कर रहा हूं? और मैं इसे थोड़ा कम गलत कैसे बना सकता हूं?
हा। मैंने कुछ साल पहले PHP में ऐसा किया था। – gahooa
आपकी इनपुट शब्द सूची कितनी बड़ी है? – Zed
मेरी शब्द सूची 200,000 शब्द (या 2.5 मेगापिक्सल) है। –