Averages/Simple moving average: Difference between revisions
Content added Content deleted
(Add Swift) |
|||
Line 926: | Line 926: | ||
(setf pointer (rest pointer)) ; advance pointer |
(setf pointer (rest pointer)) ; advance pointer |
||
(/ sum (min count period))))</lang> |
(/ sum (min count period))))</lang> |
||
=={{header|Crystal}}== |
|||
<lang ruby>def sma(n) Proc(Float64, Float64) |
|||
a = Array(Float64).new |
|||
->(x : Float64) { |
|||
a.shift if a.size == n |
|||
a.push x |
|||
a.sum / a.size.to_f |
|||
} |
|||
end |
|||
sma3, sma5 = sma(3), sma(5) |
|||
# Copied from the Ruby solution. |
|||
(1.upto(5).to_a + 5.downto(1).to_a).each do |n| |
|||
printf "%d: sma3 = %.3f - sma5 = %.3f\n", n, sma3.call(n.to_f), sma5.call(n.to_f) |
|||
end</lang> |
|||
<pre> |
|||
1: sma3 = 1.000 - sma5 = 1.000 |
|||
2: sma3 = 1.500 - sma5 = 1.500 |
|||
3: sma3 = 2.000 - sma5 = 2.000 |
|||
4: sma3 = 3.000 - sma5 = 2.500 |
|||
5: sma3 = 4.000 - sma5 = 3.000 |
|||
5: sma3 = 4.667 - sma5 = 3.800 |
|||
4: sma3 = 4.667 - sma5 = 4.200 |
|||
3: sma3 = 4.000 - sma5 = 4.200 |
|||
2: sma3 = 3.000 - sma5 = 3.800 |
|||
1: sma3 = 2.000 - sma5 = 3.000 |
|||
</pre> |
|||
=={{header|D}}== |
=={{header|D}}== |