in reply to Iterating through string combinations

I recently had a similar problem (well, exactly the same problem). The solution I rolled was to come up with an arbitrary base aritmetic solution. That is to say that instead of doing addition base 10, do addition base 128. What I did is to write a function that took an array and made sure that it was in the proper format (all digits were less than 127). If it was not, it would fix it so that it was in the proper format. So, if this function were passed (1,3,129), it would return (1,4,1). The advantage as I saw it was that you could use the normal aritmetic operations without having to worry about anything breaking.

Once you can do that, you can use map and chr to convert your base-128 vector into a character string. As merlyn alluded to above, no matter how you do it, this problem is exponential. You can be clever and reduce the number of iterations, but it is still exponential.