Advertisement
dalvorsn

Untitled

Mar 31st, 2012
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.10 KB | None | 0 0
  1. function factorial(n)
  2.     for i = n-1, 2, -1 do
  3.         n = n * i
  4.     end
  5.     return n
  6. end
  7.  
  8. function permutar(text)
  9.     local permut = {}
  10.     local factorialLength = factorial(#text)
  11.     local factorialLength1 = factorial(#text-1)
  12.  
  13.     if #text == 2 then
  14.         local letterPos
  15.         for i = 1, factorialLength do
  16.             for j = 1, #text do
  17.                 letterPos = ((i+j) % #text) + 1
  18.                 permut[i] = (permut[i] or "")..text:sub(letterPos, letterPos)
  19.             end
  20.         end
  21.     else
  22.         for i = 1, factorialLength, factorialLength1 do
  23.             local letterPos = math.floor((i/factorialLength1) % #text) + 1
  24.             local letter = text:sub(letterPos, letterPos)
  25.             for j = 1, factorialLength1 do
  26.                 permut[i+j-1] = (permut[i+j-1] or "")..letter
  27.             end
  28.             local nText = ""
  29.             for j = 1, #text do
  30.                 if text:sub(j, j) ~= letter then
  31.                     nText = nText..text:sub(j, j)
  32.                 end
  33.             end
  34.             local permut2 = permutar(nText)
  35.             for j=1, #permut2 do
  36.                 permut[i+j-1] = (permut[i+j-1] or "")..(permut2[j] or "");
  37.             end
  38.         end
  39.     end
  40.     return permut
  41. end
  42.  
  43. local text = "abc"
  44. local permut = permutar(text)
  45. for i=1, #permut do
  46.     print(permut[i])
  47. end
  48. print(os.clock())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement