Permutations

Run Settings
LanguageLua
Language Version
Run Command
function Factorial(Number) return (Number == 0 and 1) or (Number * Factorial(Number - 1)) end function Permute(String) local Length = #String local TotalPermutes = Factorial(Length) local Permutations = {} for Index = 1, TotalPermutes do print(Index) table.insert(Permutations, String) local Index2 = Length - 1 while String:sub(Index2, Index2) >= String:sub(Index2 + 1, Index2 + 1) do Index2 = Index2 - 1 end local Length2 = Length while String:sub(Index2, Index2) >= String:sub(Length2, Length2) do Length2 = Length2 - 1 end String = SwapCharacters(String, Index2, Length2) String = ReverseSubstring(String, Index2 + 1) end return Permutations end function SwapCharacters(String, Index, Index2) local Characters = {} for Character in String:gmatch(".") do table.insert(Characters, Character) end Characters[Index], Characters[Index2] = Characters[Index2], Characters[Index] return table.concat(Characters) end function ReverseSubstring(String, Start) local Characters = {} for Character in String:gmatch(".") do table.insert(Characters, Character) end local Index = Start local Index2 = #Characters while Index < Index2 do Characters[Index], Characters[Index2] = Characters[Index2], Characters[Index] Index = Index + 1 Index2 = Index2 - 1 end return table.concat(Characters) end local String = "" local Permutations = Permute("wow") for _, Permute in next, Permutations do print(Permute) end
Editor Settings
Theme
Key bindings
Full width
Lines