Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function factorial(n)
- for i = n-1, 2, -1 do
- n = n * i
- end
- return n
- end
- function permutar(text)
- local permut = {}
- local factorialLength = factorial(#text)
- local factorialLength1 = factorial(#text-1)
- if #text == 2 then
- local letterPos
- for i = 1, factorialLength do
- for j = 1, #text do
- letterPos = ((i+j) % #text) + 1
- permut[i] = (permut[i] or "")..text:sub(letterPos, letterPos)
- end
- end
- else
- for i = 1, factorialLength, factorialLength1 do
- local letterPos = math.floor((i/factorialLength1) % #text) + 1
- local letter = text:sub(letterPos, letterPos)
- for j = 1, factorialLength1 do
- permut[i+j-1] = (permut[i+j-1] or "")..letter
- end
- local nText = ""
- for j = 1, #text do
- if text:sub(j, j) ~= letter then
- nText = nText..text:sub(j, j)
- end
- end
- local permut2 = permutar(nText)
- for j=1, #permut2 do
- permut[i+j-1] = (permut[i+j-1] or "")..(permut2[j] or "");
- end
- end
- end
- return permut
- end
- local text = "abc"
- local permut = permutar(text)
- for i=1, #permut do
- print(permut[i])
- end
- print(os.clock())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement