28 lines
753 B
Lua
28 lines
753 B
Lua
function mode(tbl) -- returns table of modes and count
|
|
assert(type(tbl) == 'table')
|
|
local counts = { }
|
|
for _, val in pairs(tbl) do
|
|
-- see http://lua-users.org/wiki/TernaryOperator
|
|
counts[val] = counts[val] and counts[val] + 1 or 1
|
|
end
|
|
local modes = { }
|
|
local modeCount = 0
|
|
for key, val in pairs(counts) do
|
|
if val > modeCount then
|
|
modeCount = val
|
|
modes = {key}
|
|
elseif val == modeCount then
|
|
table.insert(modes, key)
|
|
end
|
|
end
|
|
return modes, modeCount
|
|
end
|
|
|
|
modes, count = mode({1,3,6,6,6,6,7,7,12,12,17})
|
|
for _, val in pairs(modes) do io.write(val..' ') end
|
|
print("occur(s) ", count, " times")
|
|
|
|
modes, count = mode({'a', 'a', 'b', 'd', 'd'})
|
|
for _, val in pairs(modes) do io.write(val..' ') end
|
|
print("occur(s) ", count, " times")
|