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>');
  });
});