2012-02-25 3 views
-4

У меня есть вопрос о Ruby:граф слов без LOOPS

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

Пример: «Сегодня день, восход солнца» Результат: {'Сегодня' => 1, 'is' => 1, 'a' => 2, 'day' => 1, 'sunrise' => 1}

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

+2

звучит, как он, иначе, почему 'for' петель ограничение? – DNA

ответ

0

Если у вас есть ограничение на петлю, перейдите к рекурсии!
Только не забудьте оставить условие остановки.

+0

карта/сокращение, вероятно, здесь приятнее и может очень хорошо работать на многоядерных компьютерах –

5

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

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
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

Nice :). И, если бы ФП ему понадобилось, он мог бы быть сжат. –

Смежные вопросы