RosettaCodeData/Task/Averages-Simple-moving-average/Lua/averages-simple-moving-aver...

20 lines
378 B
Lua

function sma(period)
local t = {}
function sum(a, ...)
if a then return a+sum(...) else return 0 end
end
function average(n)
if #t == period then table.remove(t, 1) end
t[#t + 1] = n
return sum(unpack(t)) / #t
end
return average
end
sma5 = sma(5)
sma10 = sma(10)
print("SMA 5")
for v=1,15 do print(sma5(v)) end
print("\nSMA 10")
for v=1,15 do print(sma10(v)) end