2019年8月27日 星期二

Javascript Permutations Enumeration (not fast)

patt=function(arr){
if(arr.constructor.name!="Array")
  return [];
arr=arr.slice();
if(arr.length==1)
  return [arr];
else if(arr.length==2)
  return [arr,arr.slice().reverse()];
else
 {
  let sum=[];
  let el=arr.shift();
  let darr=patt(arr);
  for(var i in new Array(arr.length+1).fill(0))
    sum.push(...darr.map(item=>
      {
        let cp=item.slice();
        cp.splice(i,0,el);
        return cp;
      }));
  return sum;
 }
};