RosettaCodeData/Task/Averages-Simple-moving-average/Groovy/averages-simple-moving-average.groovy
2023-07-01 13:44:08 -04: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)) }