Anagrams: Difference between revisions
Content added Content deleted
(added perl) |
No edit summary |
||
Line 275: | Line 275: | ||
>>> anagram = defaultdict(list) # map sorted chars to anagrams |
>>> anagram = defaultdict(list) # map sorted chars to anagrams |
||
>>> for word in words: |
>>> for word in words: |
||
anagram[ |
anagram[tuple(sorted(word))].append( word ) |
||
Line 284: | Line 284: | ||
[' |
['angel', 'angle', 'galen', 'glean', 'lange'] |
||
['alger', 'glare', 'lager', 'large', 'regal'] |
['alger', 'glare', 'lager', 'large', 'regal'] |
||
⚫ | |||
['evil', 'levi', 'live', 'veil', 'vile'] |
['evil', 'levi', 'live', 'veil', 'vile'] |
||
⚫ | |||
['elan', 'lane', 'lean', 'lena', 'neal'] |
['elan', 'lane', 'lean', 'lena', 'neal'] |
||
['abel', 'able', 'bale', 'bela', 'elba'] |
['abel', 'able', 'bale', 'bela', 'elba'] |
||
Line 300: | Line 300: | ||
anagram = Hash.new {|hash, key| hash[key] = []} |
anagram = Hash.new {|hash, key| hash[key] = []} |
||
for word in words |
for word in words |
||
anagram[word.split('').sort |
anagram[word.split('').sort] << word |
||
end |
end |
||
Line 310: | Line 310: | ||
end</ruby> |
end</ruby> |
||
Output: |
Output: |
||
⚫ | |||
["evil", "levi", "live", "veil", "vile"] |
["evil", "levi", "live", "veil", "vile"] |
||
⚫ | |||
["abel", "able", "bale", "bela", "elba"] |
["abel", "able", "bale", "bela", "elba"] |
||
[" |
["elan", "lane", "lean", "lena", "neal"] |
||
["alger", "glare", "lager", "large", "regal"] |
["alger", "glare", "lager", "large", "regal"] |
||
⚫ | |||
⚫ |