From eb41f1b49f6c722b74e46d45adf6d7205e82a0a4 Mon Sep 17 00:00:00 2001 From: James Walker Date: Wed, 24 Oct 2018 10:23:37 -0400 Subject: [PATCH] ruby - word-count --- ruby/word-count/word_count.rb | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/ruby/word-count/word_count.rb b/ruby/word-count/word_count.rb index b840951..9a70d50 100644 --- a/ruby/word-count/word_count.rb +++ b/ruby/word-count/word_count.rb @@ -1,14 +1,20 @@ +# Phrase class class Phrase def initialize(phrase) - @phrase = phrase + @words = phrase.downcase.scan(/\w+(?:'\w)*/) end def word_count - counts = {} - @phrase.scan(/\w+(?:'\w)*/).each do |word| - word.downcase! - counts[word] = counts[word].to_i + 1 - end - counts + Hash[word_counts] + end + + private + + def word_groups + @words.group_by { |word| word } + end + + def word_counts + word_groups.map { |word, list| [word, list.size] } end end