Module:Math: Difference between revisions

Jump to navigation Jump to search
Content added Content deleted
en>Primefac
(implementing pseudo-TPER to add "median" - see Special:PermaLink/861908321#Module:Average)
en>Primefac
(better median handling)
Line 234: Line 234:


function wrap.median(args)
function wrap.median(args)
return p._median(args)
return p._median(unpackNumberArgs(args))
end
end


function p._median(args)
function p._median(...)
local vals = {}
local vals = makeArgArray(...)
local count = 0
local count = #vals
table.sort(vals)
for k,v in pairs(args) do
if v == string.match(v,'(%d+)') then
if p._mod(count, 2) == 0 then
table.insert(vals,v)
count = count+1
end
end
table.sort(vals,function(a,b) return tonumber(a) < tonumber(b) end) -- force number sort
if count/2 == math.ceil(count/2) then
return (vals[count/2] + vals[count/2+1])/2
return (vals[count/2] + vals[count/2+1])/2
else
else
return vals[math.ceil(count/2)];
return vals[count/2+1]
end
end
end
end