Advertisement
NikolaDimitroff

Generating ntuples

Nov 12th, 2013
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var segments = [5, 4];
  2. var radius = 1;
  3.  
  4. // A generic function to copy the tuple
  5. function copy(array) {
  6.     var newArray = [];
  7.     for (var i = 0; i < array.length; i++) {
  8.         newArray[i] = array[i];
  9.     }
  10.     return newArray;
  11. }
  12.  
  13. // A function that computes the successor of a given tuple
  14. function getNextTuple(lastGeneratedTuple) {
  15.     var newTuple = copy(lastGeneratedTuple)
  16.     for (i = segments.length - 1; i >= 0; i--) {
  17.         // Increment the last coordinate. If it overflows,
  18.               // continue incrementing the next coordinate, else we are done
  19.         newTuple[i]++;
  20.         if (newTuple[i] > segments[i] - 1) {
  21.             newTuple[i] = 0;
  22.         }
  23.         else {
  24.             break;
  25.         }
  26.     }
  27.     return newTuple;
  28. }
  29.  
  30. // A function that enumerates all possible tuples
  31. function enumerateAllTuples() {
  32.  
  33. // The number of tuples is the product of all segments
  34.     var numberOfTuples = 1;
  35.     for (i = 0; i < segments.length; i++) {
  36.         numberOfTuples *= segments[i];
  37.     }
  38.     var allTuples = [],
  39.         zeroTuple = [];
  40.     for (var i = 0; i < segments.length; i++) {
  41.         zeroTuple[i] = 0;
  42.     }
  43.     allTuples[0] = zeroTuple;
  44.     for (i = 1; i < numberOfTuples; i++) {
  45.         allTuples[i] = getNextTuple(allTuples[i - 1]);
  46.     }
  47.     return allTuples;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement