Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var mapUtils = operative({
- compressMap: function(map) {
- var compressedMap = map;
- var runAgain = false;
- for (var i = 0, l = map.length; i < l; i++) {
- var c1 = map[i];
- for(var i2 = 0; i2 < l; i2++) {
- var c2 = map[i2];
- if(!c1 || !c2) {
- continue;
- }
- if (c1 === c2) {
- continue;
- }
- if(c1[0] === c2[0] && c1[1] === c2[1]) {
- if((c1[2] >= c2[2] && c1[3] >= c2[3]) || (c2[2] >= c1[2] && c2[3] >= c1[3])) {
- compressedMap.splice(compressedMap.indexOf(c1), 1);
- compressedMap.splice(compressedMap.indexOf(c2), 1);
- compressedMap.push([c1[0], c1[1], Math.max(c1[2], c2[2]), Math.max(c1[3], c2[3])]);
- runAgain = true;
- continue;
- }
- }
- if (c1[1] === c2[1]) {
- if(c1[0] + c1[2] === c2[0]) {
- if(c1[3] > c2[3]) {
- compressedMap.splice(compressedMap.indexOf(c1), 1);
- compressedMap.splice(compressedMap.indexOf(c2), 1);
- compressedMap.push([c1[0], c1[1], c1[2]+c2[2], c2[3]]);
- compressedMap.push([c1[0], c2[1], c1[2], c1[3]-c2[3]])
- runAgain = true;
- continue;
- } else {
- compressedMap.splice(compressedMap.indexOf(c1), 1);
- compressedMap.splice(compressedMap.indexOf(c2), 1);
- compressedMap.push([c1[0], c1[1], c1[2]+c2[2], c1[3]]);
- compressedMap.push([c2[0], c1[3], c2[2], c2[3] - c1[3]])
- runAgain = true;
- continue;
- }
- }
- }
- if (c1[0] === c2[0]) {
- if(c1[1] + c1[3] === c2[1]) {
- if(c1[2] > c2[2]) {
- compressedMap.splice(compressedMap.indexOf(c1), 1);
- compressedMap.splice(compressedMap.indexOf(c2), 1);
- compressedMap.push([c1[0], c1[1], c2[2], c1[3] + c2[3]]);
- compressedMap.push([c2[2], c1[1], c2[2] - c1[2], c1[3]])
- runAgain = true;
- } else {
- compressedMap.splice(compressedMap.indexOf(c1), 1);
- compressedMap.splice(compressedMap.indexOf(c2), 1);
- compressedMap.push([c1[0], c1[1], c1[2], c1[3] + c2[3]]);
- compressedMap.push([c1[2], c1[3], c2[2]-c1[2], c2[3]]);
- runAgain = true;
- }
- }
- }
- }
- }
- console.log(compressedMap.length);
- if(runAgain) {
- return compressMap(compressedMap);
- }
- return compressedMap;
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement