RosettaCodeData/Task/Averages-Simple-moving-average/Groovy/averages-simple-moving-average.groovy
Ingy döt Net db842d013d A-M baby
2013-04-10 21:29:02 -07:00

15 lines
394 B
Groovy

def simple_moving_average = { size ->
def nums = []
double total = 0.0
return { newElement ->
nums += newElement
oldestElement = nums.size() > size ? nums.remove(0) : 0
total += newElement - oldestElement
total / nums.size()
}
}
ma5 = simple_moving_average(5)
(1..5).each{ printf( "%1.1f ", ma5(it)) }
(5..1).each{ printf( "%1.1f ", ma5(it)) }