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;