19 lines
418 B
Ruby
19 lines
418 B
Ruby
def simple_moving_average(size)
|
|
nums = []
|
|
sum = 0.0
|
|
lambda do |hello|
|
|
nums << hello
|
|
goodbye = nums.length > size ? nums.shift : 0
|
|
sum += hello - goodbye
|
|
sum / nums.length
|
|
end
|
|
end
|
|
|
|
ma3 = simple_moving_average(3)
|
|
ma5 = simple_moving_average(5)
|
|
|
|
(1.upto(5).to_a + 5.downto(1).to_a).each do |num|
|
|
printf "Next number = %d, SMA_3 = %.3f, SMA_5 = %.1f\n",
|
|
num, ma3.call(num), ma5.call(num)
|
|
end
|