Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- do
- local function lookup_memoized (val, memoized)
- if memoized[val] == nil then
- if type(val) == "table" then
- memoized[val] = {}
- memoizing_deepcopy (val, memoized, memoized[val])
- else
- return val
- end
- end
- return memoized[val]
- end
- function memoizing_deepcopy (src, memoized, res)
- local memoized = memoized or {}
- local res = res or {}
- for k, v in pairs(src) do
- if k ~= memoizing_deepcopy and v ~= memoizing_deepcopy then
- local nk = lookup_memoized (k, memoized)
- local nv = lookup_memoized (v, memoized)
- res[nk] = nv
- end
- end
- return res
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement