Skip to content

Instantly share code, notes, and snippets.

@peagha
Last active February 6, 2018 22:16
Show Gist options
  • Save peagha/7772dc6a6d1e9f4a2718c594b5b92b59 to your computer and use it in GitHub Desktop.
Save peagha/7772dc6a6d1e9f4a2718c594b5b92b59 to your computer and use it in GitHub Desktop.
Prime number anagram implementation
require 'prime'
require 'minitest/autorun'
class Anagram
LETTER_MAP = ('a'..'z').zip(Prime.each).to_h
def self.anagram?(word_1, word_2)
word_hash(word_1) == word_hash(word_2)
end
def self.word_hash(word)
word.chars
.map {|w| LETTER_MAP[w]}
.reduce(:*)
end
end
describe Anagram do
describe 'anagram?' do
it 'returns true when two words are anagrams' do
assert Anagram.anagram?('amor', 'roma')
assert Anagram.anagram?('pai', 'pia')
assert Anagram.anagram?('seu', 'use')
assert Anagram.anagram?('alfa', 'fala')
end
it 'returns false when two words are not anagrams' do
refute Anagram.anagram?('amor', 'rome')
refute Anagram.anagram?('pai', 'piaa')
refute Anagram.anagram?('seu', 'usse')
refute Anagram.anagram?('alfa', 'fafa')
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment