Anagrams of a word
HTML
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<input type="text" id="my_number" placeholder="Number" style="margin-bottom: 5px;"/><br />
<input type="text" id="my_text" placeholder="Letters" style="margin-bottom: 5px;"/><br/>
<span id="my_word"></span><br />
<input type="button" id="my_btn" value="Submit" onclick="GenerateAnagrams();" />
JavaScript
function generateAnagrams(word, number) {
if (word.length < 2) {
return [word];
} else {
// By declaring all variables outside of the loop,
// we improve efficiency, avoiding the needless
// declarations each time.
var anagrams = [];
var before, focus, after;
var shortWord, subAnagrams, newEntry;
for (var i = 0; i < word.length; i++) {
before = word.slice(0, i);
focus = word[i];
after = word.slice(i + 1, word.length + 1);
shortWord = before + after;
subAnagrams = generateAnagrams(shortWord, number);
for (var j = 0; j < subAnagrams.length; j++) {
newEntry = focus + subAnagrams[j];
newEntry = newEntry.substr(0, number);
anagrams.push(newEntry);
}
}
//Remove all duplicate letters from array
//This prevent substr above from generate
anagrams = unique(anagrams);
return anagrams;
}
}
function unique(list) {
var result = [];
$.each(list, function (i, e) {
if ($.inArray(e, result) == -1) result.push(e);
});
return result;
}
function GenerateAnagrams() {
var number = $("#my_number").val();
var word = $("#my_text").val();
var result = generateAnagrams(word, number);
$("#my_word").text(result);
}