var unCombined = ''; var previousResult = ''; var combinations = arrayNew(1); var i = 0; var j = 0; var k = 0; if (isSimpleValue(arguments.originalSet)) { unCombined = listToArray(arguments.originalSet, arguments.delimiter); } else if (isArray(arguments.originalSet)) { unCombined = arguments.originalSet; } previousResult = unCombined; combinations = previousResult; for(i=2; i LTE arguments.combinationLen; i=i+1) { combinations = arrayNew(1); for (j=1; j LTE arrayLen(unCombined); j=j+1) { for (k=1; k LTE arrayLen(previousResult); k=k+1) { arrayAppend(combinations, unCombined[j] & previousResult[k]); } } previousResult = combinations; } arraySort(combinations,"text"); return combinations; var rows = listLen(arguments.set)^arguments.length; var result = arrayNew(1); var setSize = listLen(arguments.set); var current = ""; var i = 0; var j = 0; arrayResize(result,rows); for( i=0; i LT rows; i = i + 1 ) { current = ""; for( j=0; j LT arguments.length; j = j + 1 ) { current = current & ListGetAt(arguments.set, fix(i / (setSize^j)) mod setSize + 1); } result[i+1] = current; } arraySort(result,"text"); return result; var set = listToArray(arguments.list); var length = arrayLen(set); var total = length^len; var result = arrayNew(1); var shift = total; var i = 0; var j = 1; arraySort( set, "text" ); arraySet( result, 1, total, "" ); for( i=1; i lte arguments.len; i = i + 1 ) { shift = shift / length; for( j=1; j lte total; j = j + 1 ) { result[j] = result[j] & set[1]; if( not (j mod shift) ) { arrayAppend( set, set[1] ); arrayDeleteAt( set, 1 ); } } } return result;
Method Time
getSet #getTickCount()-t#
getSetOp #getTickCount()-t#
pairGen #getTickCount()-t#
permute #getTickCount()-t#
getCombinationsNonRecursive#getTickCount()-t#
AllSets #getTickCount()-t#
GetPermutations#getTickCount()-t#
Consistent: # arrayToList(getSetResult) EQ arrayToList(getSetOpResult) AND arrayToList(getSetResult) EQ arrayToList(permuteResult) AND arrayToList(getSetOpResult) EQ arrayToList(permuteResult) AND arrayToList(pairGenResult) EQ arrayToList(permuteResult) AND arrayToList(getCombinationsResult) EQ arrayToList(permuteResult) AND arrayToList(allSetsResult) EQ arrayToList(permuteResult) AND arrayToList(getPermutationsResult) EQ arrayToList(permuteResult) #