JSFiddle - React, Tailwind, and code Playground
by acarlon
HTML
<div class='underline'>Result</div>
<span id='results'></span>
<div class='underline'>Count</div>
<span id='count'></span>
<div id='' class='underline'>Debug output</div>
<span id='output'></span>
CSS
.underline
{
text-decoration:underline;
margin-top:10px;
}
JavaScript
function debugOutput(info)
{
var outputDiv = document.getElementById('output');
var logDiv = document.createElement('div');
logDiv.innerHTML = info;
outputDiv.appendChild(logDiv);
}
function getPermutations(input)
{
if(input.length <= 1)
{
return [input];
}
var character = input[0];
var returnArray = [];
var subPermutes = getPermutations(input.slice(1));
debugOutput('Returned array: ' + subPermutes);
for(var subPermuteIndex = 0; subPermuteIndex < subPermutes.length; subPermuteIndex++ )
{
var subPermute = subPermutes[subPermuteIndex];
for(var charIndex = 0; charIndex <= subPermute.length; charIndex++)
{
var pre = subPermute.slice( 0, charIndex );
var post = subPermute.slice( charIndex );
returnArray.push(pre+character+post);
debugOutput(pre + '_' + character + '_' + post );
}
}
return returnArray;
}
var perms = getPermutations('1234');
var results = document.getElementById('results');
results.innerHTML = perms;
var count = document.getElementById('count');
count.innerHTML = perms.length;