我需要一个lua语言的代码,可以在数组中查找序列中的项目数量超过特定nubmer的项目。示例:如果我有数组(数字将不是正确的顺序,随机分布) - >(2,5,9,10,11,21,23,15,14,12,22,13, 24);有两个连续的组(9,10,11,12,13,14,15)和(21,22,23,24)。如果特定数字说(4)或更多,我希望找到第一组,或者如果数字是(3)或更少,我可以得到两组。 感谢
答案 0 :(得分:3)
逻辑方式似乎是重新排序表并查找序列中的间隙。
function table.copy(t)
local t2 = {}
for k,v in pairs(t) do
t2[k] = v
end
return t2
end
function groups(org, cnt)
-- Returns a table containing tables containing the groups found
local res = {}
local group = {}
tbl = table.copy(org) -- Prevent reordering of Original Table
table.sort(tbl)
local last = nil
for _,val in ipairs(tbl) do
if last and last + 1 ~= val then
if #group >= cnt then
table.insert(res,group)
end
group = {}
end
table.insert(group,val)
last = val
end
if #group >= cnt then
table.insert(res,group)
end
return res
end
local org = { 2,5,9,10,11,21,23,15,14,12,22,13,24 }
local result = groups(org,3)
print('Number of Groups',#result)