mramine364

Nth Permutation

May 30th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function nth_perm(set, nth) {  
  2.     var tab=set.slice(), i=0, fs=[], f=1, p=1;
  3.     while(p<tab.length){
  4.         f *= p;
  5.         fs.push(f);
  6.         p++;
  7.     }
  8.     while(nth>0){
  9.         var x = Math.floor(nth/fs[tab.length-2-i]);
  10.         var j = x-1+i;
  11.         while( j>=i ){
  12.             var tmp=tab[j];
  13.             tab[j]=tab[j+1];
  14.             tab[j+1]=tmp;
  15.             j--;
  16.         }
  17.         nth-=fs[tab.length-2-i]*x;
  18.         i++;
  19.     }
  20.     return tab;
  21. }
Advertisement
Add Comment
Please, Sign In to add comment