如何使用Lua在数组中查找连续的项?

我需要一段用 Lua 语言编写的代码,能够找到数组中连续项的分组,其中分组中的项数超过一个特定的值。例如:如果我有以下数组(数字不按顺序排列,随机分布)-> (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)或以下,我可以得到这两个分组。

谢谢

点赞
用户438753
用户438753

逻辑上看,似乎应该重新排列表格并在序列中寻找间隙。

function table.copy(t)
    local t2 = {}
    for k,v in pairs(t) do
        t2[k] = v
    end
    return t2
end

function groups(org, cnt)
    -- 返回包含已找到的组的表格的表格
    local res = {}
    local group = {}
    tbl = table.copy(org) -- 防止重排原始表格
    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)
2012-11-20 13:46:38