Averages/Simple moving average: Difference between revisions

m
m (→‎{{header|Sidef}}: updated code)
Line 3,948:
Implemented with closures:
<lang ruby>func simple_moving_average(period) {
 
var list = []
var sum = 0
 
func (number) {
list.append(number)
Line 3,961:
}
}
 
var ma3 = simple_moving_average(3);
var ma5 = simple_moving_average(5);
 
for num (1..5, flip(1..5)) {
[1 ..^ 6, 6 ^.. 1].map{@|_} -> each {|num|
printf("Next number =  %d, SMA_3 =  %.3f, SMA_5 =  %.1f\n",
num, ma3.call(num), ma5.call(num))
}</lang>
Line 3,972:
Implemented as a class:
<lang ruby>class sma_generator(period, list=[], sum=0) {
 
method SMA(number) {
list.append(number)
Line 3,982:
}
}
 
var ma3 = sma_generator(3)
var ma5 = sma_generator(5)
 
for num in [@|(1..5), @|flip(1..5 -> flip)]) {
printf("Next number =  %d, SMA_3 =  %.3f, SMA_5 =  %.1f\n",
num, ma3.SMA(num), ma5.SMA(num))
}</lang>
2,747

edits