A followup on how to handle duplicate characters in the permuting algorithm. The following seems to work, not sure how it will scale. tString can contain any characters -- duplicates, digits, spaces, whatever.
function permute tString -- returns all the permutations in the string tString put (the length of tString) into N repeat with c = 1 to N put char c of tString into charAtLoc[c] end repeat subtract 1 from N put P2(N,49) into permList repeat with c = 1 to N+1 replace c with charAtLoc[c] in permList end repeat return permList end permute 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 -- Peter Peter M. Brigham pmb...@gmail.com http://home.comcast.net/~pmbrig _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode