Advertisement
Guest User

Untitled

a guest
Oct 30th, 2014
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var mapUtils = operative({
  2.             compressMap: function(map) {
  3.                 var compressedMap = map;
  4.                 var runAgain = false;
  5.                 for (var i = 0, l = map.length; i < l; i++) {
  6.                     var c1 = map[i];
  7.                     for(var i2 = 0; i2 < l; i2++) {
  8.                         var c2 = map[i2];
  9.  
  10.                         if(!c1 || !c2) {
  11.                             continue;
  12.                         }
  13.  
  14.                         if (c1 === c2) {
  15.                             continue;
  16.                         }
  17.  
  18.                         if(c1[0] === c2[0] && c1[1] === c2[1]) {
  19.                             if((c1[2] >= c2[2] && c1[3] >= c2[3]) || (c2[2] >= c1[2] && c2[3] >= c1[3])) {
  20.                                 compressedMap.splice(compressedMap.indexOf(c1), 1);
  21.                                 compressedMap.splice(compressedMap.indexOf(c2), 1);
  22.                                 compressedMap.push([c1[0], c1[1], Math.max(c1[2], c2[2]), Math.max(c1[3], c2[3])]);
  23.                                 runAgain = true;
  24.                                 continue;
  25.                             }
  26.                         }
  27.  
  28.                         if (c1[1] === c2[1]) {
  29.                             if(c1[0] + c1[2] === c2[0]) {
  30.                                 if(c1[3] > c2[3]) {
  31.                                     compressedMap.splice(compressedMap.indexOf(c1), 1);
  32.                                     compressedMap.splice(compressedMap.indexOf(c2), 1);
  33.                                     compressedMap.push([c1[0], c1[1], c1[2]+c2[2], c2[3]]);
  34.                                     compressedMap.push([c1[0], c2[1], c1[2], c1[3]-c2[3]])
  35.                                     runAgain = true;
  36.                                     continue;
  37.                                 } else {
  38.                                     compressedMap.splice(compressedMap.indexOf(c1), 1);
  39.                                     compressedMap.splice(compressedMap.indexOf(c2), 1);
  40.                                     compressedMap.push([c1[0], c1[1], c1[2]+c2[2], c1[3]]);
  41.                                     compressedMap.push([c2[0], c1[3], c2[2], c2[3] - c1[3]])
  42.                                     runAgain = true;
  43.                                     continue;
  44.                                 }
  45.                             }
  46.                         }
  47.                        if (c1[0] === c2[0]) {
  48.                             if(c1[1] + c1[3] === c2[1]) {
  49.                                 if(c1[2] > c2[2]) {
  50.                                     compressedMap.splice(compressedMap.indexOf(c1), 1);
  51.                                     compressedMap.splice(compressedMap.indexOf(c2), 1);
  52.                                     compressedMap.push([c1[0], c1[1], c2[2], c1[3] + c2[3]]);
  53.                                     compressedMap.push([c2[2], c1[1], c2[2] - c1[2], c1[3]])
  54.                                     runAgain = true;
  55.                                 } else {
  56.                                     compressedMap.splice(compressedMap.indexOf(c1), 1);
  57.                                     compressedMap.splice(compressedMap.indexOf(c2), 1);
  58.                                     compressedMap.push([c1[0], c1[1], c1[2], c1[3] + c2[3]]);
  59.                                     compressedMap.push([c1[2], c1[3], c2[2]-c1[2], c2[3]]);
  60.                                     runAgain = true;
  61.                                 }
  62.                             }
  63.                         }
  64.                     }
  65.                 }
  66.                 console.log(compressedMap.length);
  67.                 if(runAgain) {
  68.                     return compressMap(compressedMap);
  69.                 }
  70.                 return compressedMap;
  71.             }
  72.         });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement