0

グループ内の項目の数が特定の数を超える配列内の連続した項目を見つけることができる lua 言語のコードが必要です。例:配列がある場合(数字は正しい順序ではなく、ランダムに分散されます)->(2,5,9,10,11,21,23,15,14,12,22,13,24 ) ; 2 つの連続したグループ (9,10,11,12,13,14,15) と (21,22,23,24 ) があります。特定の数が(4)以上の場合は最初のグループを見つけたい、たとえば数が(3)以下の場合は2つのグループを取得できます。ありがとう

4

1 に答える 1

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)
于 2012-11-20T13:46:38.863 に答える