Thanks Peter, your script works, but is in the same speed region as my original script, with the added disadvantage that it can't go beyond 9 chars.
As for the duplicate elements : I did the same before - make all the possible permutations and then delete the duplicate ones. But as Geoff rightly points out and I had discovered as well, that doesn't scale well. If we manage to delete duplicates in an earlier stage, many permutations down the line need not to be made, which can make it much faster. I do the deletions of duplicates in my script now as early as possible, which all of a sudden makes it faster than Geoff's script if I have many duplicates in the Input. My script 10 input elements no duplicates - 4407 millisecs Geoff's script idem - 474 millisecs My script 10 input elements duplicates (0001112223) - 56 milli Geoff's script idem with deletion of duplicates at end - 534 milli (the normal script + the time for the deletions at the end) So, getting rid of the duplicates inside the script is quite important. I still don't see yet how I can do that in Geoff's script (I will look into that again, as soon as I can find a little time). If we can get that to work, I think we'll have a winner :-) my script : function BC4_PermMech4_Duplicates_Lines ToPermutate set cursor to busy put empty into TempPerms5 put the number of lines of ToPermutate into NumElements -- *** First calc the upper half. put line 1 of ToPermutate & comma & line 2 of ToPermutate & comma into TempPerms1 put line 3 to -1 of ToPermutate into tInput3 put 3 into Index repeat for each line newElement in tInput3 set the cursor to busy repeat for each line tLine in TempPerms1 repeat with y = Index down to 1 put tLine into Temp put newElement & comma before item y of temp put Temp & cr after TempPerms5 end repeat end repeat put BC2_RemoveDuplicate_LooseOrder_Lines (TempPerms5) into TempPerms1 -- #### HERE IS THE DELETION HANDLER put empty into TempPerms5 add 1 to Index end repeat -- *** Now the second half -- *** Copy first half as second half and replace in the second half put TempPerms1 into TempPerms2 replace 1 with "z" in TempPerms2 replace 2 with 1 in TempPerms2 replace "z" with 2 in TempPerms2 put TempPerms2 after TempPerms1 delete char -1 of TempPerms1 choose browse tool Return TempPerms1 end BC4_PermMech4_Duplicates_Lines --- function BC2_RemoveDuplicate_LooseOrder_Lines pData put ":" & cr into DD replace cr with DD in pData split pData by cr and ":" Return the keys of pData end BC2_RemoveDuplicate_LooseOrder_Lines -------- _______________________________________________ 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