Advertisement
Guest User

Untitled

a guest
Sep 5th, 2011
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.78 KB | None | 0 0
  1. do
  2.     local function lookup_memoized (val, memoized)
  3.         if memoized[val] == nil then
  4.             if type(val) == "table" then
  5.                 memoized[val] = {}
  6.                 memoizing_deepcopy (val, memoized, memoized[val])
  7.             else
  8.                 return val
  9.             end
  10.         end
  11.         return memoized[val]
  12.     end
  13.  
  14.     function memoizing_deepcopy (src, memoized, res)
  15.         local memoized = memoized or {}
  16.         local res = res or {}
  17.         for k, v in pairs(src) do
  18.             if k ~= memoizing_deepcopy and v ~= memoizing_deepcopy then
  19.                 local nk = lookup_memoized (k, memoized)
  20.                 local nv = lookup_memoized (v, memoized)
  21.                 res[nk] = nv
  22.             end
  23.         end
  24.         return res
  25.     end
  26. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement