Advertisement
billysback

Cities thing

Jun 26th, 2013
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.88 KB | None | 0 0
  1. function clone(table)
  2.     local ntable = {}
  3.     for k,v in pairs(table) do
  4.         ntable[k] = v
  5.     end
  6.     return ntable
  7. end
  8.  
  9. function getSize(table)
  10.     local size = 0
  11.     for k,v in pairs(table) do
  12.         if v ~= nil then size = size + 1 end
  13.     end
  14.     return size
  15. end
  16.  
  17. function arrangeInDistance(point)
  18.     local dps = {}
  19.     local cpoints = clone(points)
  20.     while getSize(cpoints) > 0 do
  21.         local index = 1
  22.         local minDist = nil
  23.         for i,p in pairs(cpoints) do
  24.             if p ~= point and p ~= nil then
  25.                 local distX = p.x-point.x
  26.                 if distX < 0 then distX = distX*-1 end
  27.                 local distY = p.y-point.y
  28.                 if distY < 0 then distY = distY*-1 end
  29.                 local dist = distX+distY
  30.                 if minDist == nil then
  31.                     minDist = dist
  32.                     index = i
  33.                 elseif dist < minDist then
  34.                     minDist = dist
  35.                     index = i
  36.                 end
  37.             end
  38.         end
  39.         dps[#dps + 1] = cpoints[index]
  40.         cpoints[index] = nil
  41.     end
  42.     return dps
  43. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement