alestane icon

divide and conquer

alestane | PRO | 06/20/13 09:28:59 PM UTC | 0 ⭐ | 334 👁️ | Never ⏰ | []
Lua |

560 B

|

None

|

0 👍

/

0 👎

function sortGrouped(t)
    local users, precedence = {}, {}
    for i = #t, 1, -1 do 
        local name = t[i].name
        if not users[name] then
            table.insert(precedence, name)
            users[name] = {}
        end
        table.insert(users[name], table.remove(t))
    end
    local function byI(a, b)
        return a.i > b.i
    end
    for name, list in pairs(users) do
        table.sort(list, byI)
    end
    table.sort(precedence, function(a, b) return users[a][1].i > users[b][1].i end)
    for _, name in ipairs(precedence) do
        for _, entry in ipairs(users[name]) do
            table.insert(t, entry)
        end
    end
end

Comments