SEPA : Simple Efficient Permutation Algorithm

Run Settings
LanguageJavaScript
Language Version
Run Command
/** * A Javascript implmentation of the Simple Efficient Permutation Algorithm (SEPA) * Source : [http://www.quickperm.org/soda_submit.php] **/ function swap( target, i, j ){ if( target ){ let temp = target[i]; target[i] = target[j]; target[j] = temp; return target; } return target; } function permute( target ){ let length = target.length; let key = length-1; let newKey = length-1; while( key > 0 && target[key] <= target[key-1] ){ key--; } key--; if( key < 0 ){ return 0; } newKey = length-1; while( newKey > key && target[newKey] <= target[key] ){ newKey--; } swap( target, key, newKey ); length--; key++; while( length > key ){ swap( target, length, key ); key++; length--; } return 1; } let test = 'cac'; let target = test.split(''); let permutations = []; do{ permutations.push( target.join('') ); } while( permute(target) ); console.log( `Permuations : ${permutations.length}\n${permutations.join("\n")}` );
Editor Settings
Theme
Key bindings
Full width
Lines