29 lines
787 B
Lua
29 lines
787 B
Lua
function extractRange (rList)
|
|
local rExpr, startVal = ""
|
|
for k, v in pairs(rList) do
|
|
if rList[k + 1] == v + 1 then
|
|
if not startVal then startVal = v end
|
|
else
|
|
if startVal then
|
|
if v == startVal + 1 then
|
|
rExpr = rExpr .. startVal .. "," .. v .. ","
|
|
else
|
|
rExpr = rExpr .. startVal .. "-" .. v .. ","
|
|
end
|
|
startVal = nil
|
|
else
|
|
rExpr = rExpr .. v .. ","
|
|
end
|
|
end
|
|
end
|
|
return rExpr:sub(1, -2)
|
|
end
|
|
|
|
local intList = {
|
|
0, 1, 2, 4, 6, 7, 8, 11, 12, 14,
|
|
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
|
|
25, 27, 28, 29, 30, 31, 32, 33, 35, 36,
|
|
37, 38, 39
|
|
}
|
|
print(extractRange(intList))
|