mergeSegment = function(segment1, segment2) { var merged = []; if(segment1[0] <= segment2[0]) { if(segment1[1] < segment2[0]) { merged = [segment1, segment2]; } else { if(segment1[1] >= segment2[1]) merged = [segment1]; else merged = [[segment1[0], segment2[1]]]; } } else { if(segment2[1] < segment1[0]) { merged = [segment2, segment1]; } else { if(segment2[1] >= segment1[1]) merged = [segment2]; else merged = [[segment2[0], segment1[1]]]; } } return merged; } compareSegment = function(segment1, segment2) { // inclusi o coincidenti if((segment1[0] >= segment2[0]) && (segment1[1] <= segment2[1])) return 0; if((segment1[0] <= segment2[0]) && (segment1[1] >= segment2[1])) return 0; // esterni if((segment1[1] < segment2[0]) || ((segment1[0] > segment2[1]))) return 1; // intersecanti return -1; } compareSegments = function(s1, s2) { return (s1[0] - s2[0]); } cleanSegmentList = function(list) { var cleaned = []; for(var i=0; i list[i][0]) cleaned[j] = list[i]; found = true; break; } if(compareSegment(cleaned[j], list[i]) < 0) { if(cleaned[j][0] <= list[i][0]) cleaned[j] = [cleaned[j][0], list[i][1]]; else cleaned[j] = [list[i][0], cleaned[j][1]]; found = true; } } if(!found) cleaned[cleaned.length] = list[i]; } } return cleaned; } compareSegmentList = function(list1, list2) { if(list1.length != list2.length) return false; for(var i=0; i