Permutation & Combination
by jinwolf
HTML
<div>
<span class="label">Letters:</span><input id="letters" type="text" value="abc" />
</div>
<div>
<span class="label">Word Length:</span><input id="wordLength" type="text" value="2"/>
</div>
<div>
<input id="getWordsButton" type="button" value="Get Words" />
</div>
<ul id="result"></ul>
CSS
span.label {
width: 100px;
float: left;
text-align:right;
padding-right:10px;
}
JavaScript
var permutate = (function() {
var results = [];
function doPermute(input, output, used, size, level) {
if (size == level) {
var word = output.join('');
results.push(word);
return;
}
level++;
for (var i = 0; i < input.length; i++) {
if (used[i] === true) {
continue;
}
used[i] = true;
output.push(input[i]);
doPermute(input, output, used, size, level);
used[i] = false;
output.pop();
}
}
return {
getPermutations: function(input, size) {
var chars = input.split('');
var output = [];
var used = new Array(chars.length);
doPermute(chars, output, used, size, 0);
return results;
}
}
})();
$('#getWordsButton').click(function() {
var letters = $('#letters').val();
var size = parseInt($('#wordLength').val());
$('ul#result').empty();
var testResults = permutate.getPermutations(letters, size);
$.each(testResults, function(index, item) {
$('ul#result').append("<li>" + item + "</li>");
});
});