17 lines
448 B
Text
17 lines
448 B
Text
main =>
|
|
L=[1, 2, 3, 4, 5, 5, 4, 3, 2, 1],
|
|
Map3 = new_map([p=3]),
|
|
Map5 = new_map([p=5]),
|
|
foreach(N in L)
|
|
printf("n: %-2d sma3: %-17w sma5: %-17w\n",N, sma(N,Map3), sma(N,Map5))
|
|
end.
|
|
|
|
sma(N,Map) = Average =>
|
|
Stream = Map.get(stream,[]) ++ [N],
|
|
if Stream.len > Map.get(p) then
|
|
Stream := Stream.tail
|
|
end,
|
|
Average = cond(Stream.len == 0,
|
|
0,
|
|
sum(Stream) / Stream.len),
|
|
Map.put(stream,Stream).
|