Skip to content

Instantly share code, notes, and snippets.

@bbwharris
Created November 16, 2011 16:33
Show Gist options
  • Save bbwharris/1370567 to your computer and use it in GitHub Desktop.
Save bbwharris/1370567 to your computer and use it in GitHub Desktop.
Anagram Kode Kata
require 'digest/sha1'
class Anagram
attr :anagrams
def initialize(file)
@anagrams = {}
File.open(file).each do |word|
add_word_to_anagrams_hash(build_key(word.chomp),word.chomp)
end
filter_anagrams
end
def pretty_print
@anagrams.each do |anagram_array|
puts anagram_array.join(", ")
end
return "\n"
end
private
def build_key(word)
Digest::SHA1.hexdigest(word.split("").sort.join(""))
end
def add_word_to_anagrams_hash(key,word)
@anagrams.key?(key) ? @anagrams[key] << word : @anagrams[key] = [word]
end
def filter_anagrams
@anagrams = @anagrams.values.select{|a| a.length > 1}
end
end
a = Anagram.new("wordlist.txt")
a.pretty_print
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment