RosettaCodeData/Task/Deconvolution-1D/Lua/deconvolution-1d-1.lua
Ingy döt Net 764da6cbbb CDE
2013-04-10 16:57:12 -07:00

15 lines
404 B
Lua

function deconvolve(f, g)
local h = setmetatable({}, {__index = function(self, n)
if n == 1 then self[1] = g[1] / f[1]
else
self[n] = g[n]
for i = 1, n - 1 do
self[n] = self[n] - self[i] * (f[n - i + 1] or 0)
end
self[n] = self[n] / f[1]
end
return self[n]
end})
local _ = h[#g - #f + 1]
return setmetatable(h, nil)
end