Never been to DZone Snippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

About this user

Jonas Raoni Soares Silva http://jsfromhell.com

« Newer Snippets
Older Snippets »
Showing 1-2 of 2 total  RSS 

Simple Permutation //JavaScript Function



[UPDATED CODE AND HELP CAN BE FOUND HERE]


example

   1  
   2  var a = ["A", "B", "C", "D"], j = permute(a);
   3  document.write(
   4      "<h2>", a.join(" - "), " = ", j.length, "</h2>",
   5      j.join("<br />")
   6  );


code

   1  
   2  //+ Jonas Raoni Soares Silva
   3  //@ http://jsfromhell.com/array/permute [v1.0]
   4  
   5  permute = function(v, m){ //v1.0
   6      for(var p = -1, j, k, f, r, l = v.length, q = 1, i = l + 1; --i; q *= i);
   7      for(x = [new Array(l), new Array(l), new Array(l), new Array(l)], j = q, k = l + 1, i = -1;
   8          ++i < l; x[2][i] = i, x[1][i] = x[0][i] = j /= --k);
   9      for(r = new Array(q); ++p < q;)
  10          for(r[p] = new Array(l), i = -1; ++i < l; !--x[1][i] && (x[1][i] = x[0][i],
  11              x[2][i] = (x[2][i] + 1) % l), r[p][i] = m ? x[3][i] : v[x[3][i]])
  12              for(x[3][i] = x[2][i], f = 0; !f; f = !f)
  13                  for(j = i; j; x[3][--j] == x[2][i] && (x[3][i] = x[2][i] = (x[2][i] + 1) % l, f = 1));
  14      return r;
  15  };

Simple Arrange //JavaScript Function



[UPDATED CODE AND HELP CAN BE FOUND HERE]



example

   1  
   2  var a = ["A", "B", "C", "D"], q = 3, j = simpleArrange(a, q);
   3  document.write(
   4      "<h2>", a.join(" - "), " : ", q, " = ", j.length, "</h2>",
   5      j.join("<br />")
   6  );


code

   1  
   2  //+ Jonas Raoni Soares Silva
   3  //@ http://jsfromhell.com/array/simple-arrange [v1.0]
   4  
   5  simpleArrange = function(a, n, m){ //v1.0
   6      var o = a;
   7      if(n >= o.length) return [];
   8      for(var j, l, k, p, f, r, q = k = 1, i = (l = o.length) + 1, j = l - n; --i; i <= j ? q *= i : k *= i);
   9      for(x = [new Array(n), new Array(n), new Array(n), new Array(n)], j = q = k * q / q, k = l + 1, i = -1;
  10          ++i < n; x[2][i] = i, x[1][i] = x[0][i] = j /= --k);
  11      for(r = new Array(q), p = -1; ++p < q;)
  12          for(r[p] = new Array(n), i = -1; ++i < n; !--x[1][i] && (x[1][i] = x[0][i],
  13              x[2][i] = (x[2][i] + 1) % l), r[p][i] = m ? x[3][i] : o[x[3][i]])
  14              for(x[3][i] = x[2][i], f = 0; !f; f = !f)
  15                  for(j = i; j;)
  16                      if(x[3][--j] == x[2][i]){
  17                          x[3][i] = x[2][i] = (x[2][i] + ++f) % l;
  18                          break;
  19                      }
  20      return r;
  21  };
« Newer Snippets
Older Snippets »
Showing 1-2 of 2 total  RSS