RosettaCodeData/Task/Averages-Simple-moving-average/Icon/averages-simple-moving-average-1.icon
2023-07-01 13:44:08 -04:00

18 lines
406 B
Text

procedure main(A)
sma := buildSMA(3) # Use better name than "I".
every write(sma(!A))
end
procedure buildSMA(P)
local stream
c := create {
stream := []
while n := (avg@&source)[1] do {
put(stream, n)
if *stream > P then pop(stream)
every (avg := 0.0) +:= !stream
avg := avg/*stream
}
}
return (@c, c)
end