Permutations
by Vladimir
HTML
<input id="nums" /><br/>
<input type="checkbox" id="isFixed" />is fixed<br />
<input type="button" value="Generate" id="gen" />
<div id="output">
</div>
JavaScript
function permutation(array, isFixed) {
if (array.length > 1) {
var firstElement = array[0];
var returnedArray = permutation(array.slice(1));
var permutedArray= [];
var temporaryArray = [];
elementLength = returnedArray[0].length;
for (var i = 0; i < returnedArray.length; i++)
for (var j = 0; j <= elementLength; j++){
temporaryArray = returnedArray[i].slice(0);
temporaryArray.splice(j,0,firstElement);
if(!isFixed || (isFixed && temporaryArray[1] == array[1])) {
permutedArray.push(temporaryArray);
}
}
return permutedArray;
} else {
return [array];
}
}
$('body').on('click', '#gen', function() {
var nums = $('#nums').val().split('');
var isFixed = $('#isFixed').prop('checked');
var result = permutation(nums, isFixed);
$('#output').html('');
result.forEach(function(subarr) {
$('#output').append('<li>'+subarr.join('')+'</li>');
});
});