Thanks Richard, So it depends on a number of factors, which makes it a bit harder. I had hoped for some general rules, like always use repeat for if possible or words are generally slower that items. But I understand, it depends on more things.
I have some hundred fitness functions, which need to be recalculated many times. But I think the problem of making Permutations might be illuminating for me, as this one takes quite long to run (with 10 or more elements to Permutate). So a good example would be how to make all possible permutations of say 10 different elements (0-9). This gives 3628800 different permutations. The resulting permutations will be in lines I guess, but what would be the best way to do this. Using lines, items, chars or any other way as Input? So the start would be f.i. a list with 10 lines with the ten elements, one in each line - That is what I am using now. OR items "0,1,2,3,4,5,6,7,8,9" or chars "0123456789" or another way to represent 10 elements to make it possible to run the script in minutes, not hours. the code I have now for this is follows - lines as input (one line per element) : function BC4_PermMech_Lines ToPermutate -- ** ToPermutate : all the elements to permutate, one per line put the number of lines of ToPermutate into NumInput put empty into TempPerms5 -- *** 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 -- repeat with y = x down to 1 put tLine into Temp put newElement & comma before item y of temp put Temp & cr after TempPerms5 end repeat end repeat delete char -1 of TempPerms5 -- ** last cr put TempPerms5 into TempPerms1 put empty into TempPerms5 add 1 to Index end repeat -- *** Now the second half -- *** First calc the upper half. Later copy and inverse all (alternative idea) put line 2 of ToPermutate & comma & line 1 of ToPermutate & comma into TempPerms2 put 3 into Index repeat for each line newElement in tInput3 set the cursor to busy repeat for each line tLine in TempPerms2 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 delete char -1 of TempPerms5 -- last cr put TempPerms5 into TempPerms2 put empty into TempPerms5 add 1 to Index end repeat put cr & TempPerms2 after TempPerms1 choose browse tool Return TempPerms1 end BC4_PermMech_Lines ----- Another example I am struggling with is to delete exact duplicate lines in a long, long list. Do I best use chars, items or words in the lines of the list? As example can be thought the deletion of duplicate permutations if you start with 10 elements, but there are duplicate elements in the start, e.g. 0011123456 . This would give 'only' 302400 permutations, so there are 60480 duplicate perms to be deleted. There might be an algorithm, which makes the correct permutations right away (in the case of duplicate elements), without first making all the general permutations and then deleting the duplicates. That would be really great and I'd love to hear it if someone knows an algorithm for those permutations !!!! But even so, I am also interested in de fastest way to delete duplicate lines anyway for other parts of my program. At the moment I use : -- function BC2_RemoveDuplicate_Lines pData repeat for each line rLine in pData add 1 to TestArray[rLine] end repeat return the keys of TestArray end BC2_RemoveDuplicate_Lines -- I hope someone knows a faster way :-) Thanks a lot, Beat _______________________________________________ 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