On Aug 26, 2014, at 9:42 AM, Beat Cornaz wrote: > Works like a charm, Geoff. Great way of tackling the thing, very original. > > function P2 N,B > -- N is the depth to permute > -- B is the ASCII value to start from > -- so P2(1,49) returns 21 cr 12 > -- P2(2,53) returns 675 cr 765 cr 756 cr 576 cr 657 cr 567 > if N = 0 then return numToChar(B) & cr > put P2(N - 1,B) into T > add B to N > repeat with i = B to N - 1 > put T into T2 > replace numToChar(i) with numToChar(N) in T2 > replace cr with numToChar(i) & cr in T2 > put T2 after R > end repeat > replace cr with numToChar(N) & cr in T > return R & T > end P2 > > If I input B =97 I get the permutations in abcd etc. which I often use, so > really great > If I input B= 48 I get the permutations in numbers 01234 etc. which I also > often use. > Beyond 9 I can easily make items and replace the ascii chars with 10, 11 etc. > > The DUPLICATES : > I've been working on it to try to include this functionality into your > script, but no dice yet. It is not really obvious at first sight. > I'll continue to work on it though. If you or anyone has a bright idea, I'd > love to hear it.
I don't know but it seems that the way to do this would be to work on permuting the character positions rather than the characters themselves. Perhaps using an array, charAtLoc[n], applying Geoff's algorithm to 1 though n, then replacing each number with charAtLoc[n] afterwards. I suspect it would be lots slower, though. -- Peter Peter M. Brigham [email protected] http://home.comcast.net/~pmbrig _______________________________________________ use-livecode mailing list [email protected] Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode
