Find an algorithm (subroutine) that when called repeatedly with the same character-string variable that is initialized with n characters, all different, will cycle through all the permutations of those n characters, so that for example, when called 24 times with a string of length 4, will have cycled that string through all 24 permutations and returned it to its initial state.
(In reply to
Solution by friedlinguini)
using your idea of treating a list length n as a base-n encoded number, my previous post becomes
list perms(list[n])
{
int i = decode(n, list[n])
element e = list[ (i/(n-1)!) % n ]
list remainder = list[n] - e
if(remainder empty) {
return e
}
else {
return e + perms(remainder)
}
}