Считайте слова без циклов - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть вопрос о Ruby:

Учитывая входную строку, мне нужно вернуть хеш, ключи которого - слова в строке, а значения - количество раз, которое появляется каждое слово.ВАЖНО: я не должен использовать циклы for.

Пример: «Сегодня день, восход» Выходные данные: {'Today' => 1, 'is' => 1, 'a' => 2, 'day' => 1, 'sunrise'=> 1}

Вы можете мне помочь?

Ответы [ 3 ]

5 голосов
/ 02 марта 2012

Попробуйте что-то вроде этого:

def count_words_without_loops(string)
  res = Hash.new(0)
  string.downcase.scan(/\w+/).map{|word| res[word] = string.downcase.scan(/\b#{word}\b/).size}
  return res
end
5 голосов
/ 02 марта 2012
h = Hash.new(0)
"Today is a day, a sunrise".scan(/\w+/) do |w|
  h[w] += 1
end

p h # {"Today"=>1, "is"=>1, "a"=>2, "day"=>1, "sunrise"=>1}
0 голосов
/ 26 февраля 2012

Если у вас есть ограничение цикла for, идите рекурсия!
Только не забудьте иметь условие остановки.

...