Skip to content

Instantly share code, notes, and snippets.

@wejrowski
Last active October 27, 2015 21:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wejrowski/71e6bba985dffee3b901 to your computer and use it in GitHub Desktop.
Save wejrowski/71e6bba985dffee3b901 to your computer and use it in GitHub Desktop.
var input = [[2,6],[3,5],[7,21],[20,21]];
var expectedOutput = [[2,6],[7,21]];
var rangesOverlap = function(range1, range2) {
return (
(range1[1] >= range2[0] && range1[1] <=range2[1]) ||
(range1[0] <= range2[0] && range1[1] >= range2[0])
);
};
var mergeRanges = function(range1, range2) {
return [Math.min(range1[0], range2[0]), Math.max(range1[1], range2[1])];
};
var reduced = input.reduce(function(reduced, range) {
var lastRange = reduced[reduced.length-1];
if (rangesOverlap(lastRange, range)) {
reduced.push(mergeRanges(reduced.pop(), range));
} else {
reduced.push(range);
}
return reduced;
}, [input[0]]);
var reducedString = JSON.stringify(reduced);
var expectedString = JSON.stringify(expectedOutput);
console.log(reducedString, "==", expectedString);
console.log("=>", (reducedString == expectedString));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment