re: Write a script to identify an anagram VIEW POST

re: Actually, the join step is unnecessary given that the arrays will match or not at that point, but it still seems like an ergonomic step if we are t...

If we wanted the comparison to work for n words, we might take an approach like this:

    def are_anagrams?(words) { |w| sort_alphabetically(w) }.uniq.size == 1

This would check if the "unique" array of sorted words is a length of one, indicating they are all the same.

In true Ruby style, we could monkey patch the Array class, like such:

class Array
  def are_anagrams? { |w| sort_alphabetically(w) }.uniq.size == 1

So then we could call:

["pots", "post", "stop"].are_anagrams? # true
["pots", "post", "ghost"].are_anagrams? # false

Looking up methods on the Array class, I see that I can refactor the above to:

def are_anagrams? { |w| sort_alphabetically(w) }

This may be less clear to non-Rubyists, but that method is there for a reason for Ruby folks.

Very cool
i'm learning ruby currently and the refactor steps are very clear and easy to follow.
At then end only one line method!
i would have written this in 20 lines probably and in a couple of hours :)

Cool stuff.

code of conduct - report abuse