Ваш оператор print
находится внутри цикла. Его следует перемещать на улицу.
numbers = [1,2,3,4,5,6,7,8,9]
result = 0
numbers.each do |number|
if number % 3 == 0 or number % 5 == 0
result += number
end
end
print result
Правильный отступ также поможет вам поймать эти ошибки. Кроме того, вы должны использовать p
для распечатки информации, а не print
.
С p
каждый выход был бы выполнен на новой линии. Вероятно, это будет намек, чтобы понять эту проблему.
Это также возможная альтернатива с использованием Enumerable#inject
с аккумулятором.
numbers = [1,2,3,4,5,6,7,8,9]
numbers.inject(0) do |acc, number|
acc + case
when number % 3 == 0 then number
when number % 5 == 0 then number
else 0
end
end
И более компактной форме
numbers = [1,2,3,4,5,6,7,8,9]
numbers.lazy.select { |n| n % 3 == 0 || n % 5 == 0 }.inject(:+)
В чем Ваш вопрос? – sawa