Advertisement
dalvorsn

Untitled

Apr 13th, 2013
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.50 KB | None | 0 0
  1. -------------------------------------------------------------------------------------------------
  2. -- Este programa รฉ protegido por leis de software internacional                                --
  3. -- e pelas leis de Deus.                                                                       --
  4. -- Afinal de contas, sรณ Deus sabe como essa merda funciona ...                                 --
  5. -- Nรฃo altere nada abaixo.                                                                     --
  6. -------------------------------------------------------------------------------------------------
  7.  
  8. getmetatable ("").__index = function (str, i)
  9.         if (type (i) == "number") then
  10.                 return string.sub (str, i, i)
  11.         end
  12.         return string [i]
  13. end
  14. function generateAnagrams(String)
  15.         local len = String:len()
  16.         local for_str = " for var_%d=1, %d do \n"
  17.         local end_str = " end \n"
  18.         local function_permut_str = "function perm(str)\n "
  19.         local function_permut_if_str = "if type(str) == \"string\" then\n"
  20.         local s = ""
  21.         -- function e if concatenados
  22.         s = s .. function_permut_str .. function_permut_if_str
  23.         -- cria numero de fors de acordo com 'len'
  24.         for i=1, len do
  25.                 s = s .. string.format(for_str, i, len)
  26.         end
  27.         -- dentro do ultimo for, printa as variaveis de controle
  28.         s = s .. "var = table.concat( " .. (
  29.         function (n)
  30.                 local temp_tab = {}
  31.                 for i=1, n do
  32.                         table.insert(temp_tab, string.format("var_%d", i))
  33.                 end
  34.                 return (
  35.                         function()
  36.                                 local str = ""
  37.                                 for i, v in pairs(temp_tab) do
  38.                                         str = str == "" and "{"..str .. tostring(v) or str .. ", ".. tostring(v)
  39.                                 end
  40.                                 return str .. "}"
  41.                         end)()
  42.         end)(len) .. ", \"\")"..(
  43.         function()
  44.                 local pattern = ""
  45.                 for i=1, len do
  46.                         pattern = pattern .. ":gsub('"..i .."', '".. String[i] .. "')"
  47.                 end
  48.                 return pattern
  49.         end)().. " \n print(var)"
  50.         for i=1, len + 1 do
  51.                 s = s .. end_str
  52.         end
  53.         s = s .. "end"
  54.         loadstring(s)()
  55.         perm(s)
  56. end
  57. generateAnagrams("abcdefg")
  58. print("os.clock(): "..os.clock())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement