Advertisement
alestane

divide and conquer

Jun 20th, 2013
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function sortGrouped(t)
  2.     local users, precedence = {}, {}
  3.     for i = #t, 1, -1 do
  4.         local name = t[i].name
  5.         if not users[name] then
  6.             table.insert(precedence, name)
  7.             users[name] = {}
  8.         end
  9.         table.insert(users[name], table.remove(t))
  10.     end
  11.     local function byI(a, b)
  12.         return a.i > b.i
  13.     end
  14.     for name, list in pairs(users) do
  15.         table.sort(list, byI)
  16.     end
  17.     table.sort(precedence, function(a, b) return users[a][1].i > users[b][1].i end)
  18.     for _, name in ipairs(precedence) do
  19.         for _, entry in ipairs(users[name]) do
  20.             table.insert(t, entry)
  21.         end
  22.     end
  23. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement