Anagrams: Difference between revisions

no edit summary
(added perl)
No edit summary
Line 275:
>>> anagram = defaultdict(list) # map sorted chars to anagrams
>>> for word in words:
anagram[strtuple(sorted(word))].append( word )
 
Line 284:
 
['caretangel', 'carteangle', 'catergalen', 'crateglean', 'tracelange']
['alger', 'glare', 'lager', 'large', 'regal']
["'caret"', "'carte"', "'cater"', "'crate"', "'trace"']
['evil', 'levi', 'live', 'veil', 'vile']
['angel', 'angle', 'galen', 'glean', 'lange']
['elan', 'lane', 'lean', 'lena', 'neal']
['abel', 'able', 'bale', 'bela', 'elba']
Line 300:
anagram = Hash.new {|hash, key| hash[key] = []}
for word in words
anagram[word.split('').sort.to_s] << word
end
 
Line 310:
end</ruby>
Output:
["caret", "carte", "cater", "crate", "trace"]
["evil", "levi", "live", "veil", "vile"]
["elan", "lane", "lean", "lena", "neal"]
["abel", "able", "bale", "bela", "elba"]
["angelelan", "anglelane", "galenlean", "gleanlena", "langeneal"]
["alger", "glare", "lager", "large", "regal"]
['"angel'", '"angle'", '"galen'", '"glean'", '"lange'"]
["elancaret", "lanecarte", "leancater", "lenacrate", "nealtrace"]
Anonymous user