29 lines
516 B
Text
29 lines
516 B
Text
prefix sma_
|
|
global p[] ind[] sum[] smpl[][] .
|
|
func new p .
|
|
p[] &= p
|
|
ind[] &= 0
|
|
sum[] &= 0
|
|
smpl[][] &= [ ]
|
|
return len p[]
|
|
.
|
|
func get id x .
|
|
ind[id] = (ind[id] + 1) mod1 p[id]
|
|
ind = ind[id]
|
|
if len smpl[id][] < ind
|
|
len smpl[id][] ind
|
|
else
|
|
sum[id] -= smpl[id][ind]
|
|
.
|
|
sum[id] += x
|
|
smpl[id][ind] = x
|
|
return sum[id] / len smpl[id][]
|
|
.
|
|
prefix
|
|
#
|
|
sma5 = sma_new 5
|
|
sma3 = sma_new 3
|
|
numfmt 4 2
|
|
for v in [ 1 2 3 4 5 5 4 3 2 1 ]
|
|
print sma_get sma3 v & " " & sma_get sma5 v
|
|
.
|