JSFiddle - React, Tailwind, and code Playground
HTML
<pre id="phrases"></pre>
JavaScript
var answer=prompt('Podaj elementy do "spermutowania" oddzielone spacjami:','Lubicie przestawiać wyrazy więc ofiaruję Wam mój kod');
var words2permute = answer.split(' ');
function permutations(words)
{
var res='';
var factorials = [];
factorials.push(1);
for(var i=1; i<=words.length; ++i)
{
factorials.push(factorials[i-1] * i);
}
for(var i=0; i<factorials[words.length]; ++i)
{
var phrase = '';
var temp = words.slice();
var positionCode = i;
for(var position=words.length; position>0; --position)
{
var selected = Math.floor(positionCode / factorials[position-1]);
phrase += temp[selected] +' ';
positionCode = positionCode % factorials[position-1];
temp.splice(selected,1);
}
res += phrase.charAt(0).toUpperCase() + phrase.slice(1, phrase.length-1) + '\n';
}
return(res);
}
//alert(permutations(words2permute));
var start = new Date().getTime();
var res2 = permutations(words2permute);
var end = new Date().getTime();
var time = end - start;
document.getElementById('phrases').innerHTML = res2;
//alert(res2);
//alert('Liczba permutacji dla ' + words2permute.length + ' elementow: '+(res2.split('\n').length-1) + '\nOrientacyjny czas wykonania (wersja iteracyjna): ' + time);