Skip to content

Instantly share code, notes, and snippets.

@oberhamsi
Created December 6, 2022 08:55
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 oberhamsi/508c8499eb157fa29ad6977b5e661f51 to your computer and use it in GitHub Desktop.
Save oberhamsi/508c8499eb157fa29ad6977b5e661f51 to your computer and use it in GitHub Desktop.
const parse = (inputString) => {
const lines = inputString.split('\n');
return lines.map(line => {
const parts = line.split(',');
const partsA = parts[0].split('-').map(i => parseInt(i));
const partsB = parts[1].split('-').map(i => parseInt(i));
return {
a: {
from: partsA[0],
to: partsA[1]
},
b: {
from: partsB[0],
to: partsB[1]
}
}
});
}
const findTotalOverlaps = (pairs) => {
return pairs.filter(({a, b}) => {
return (
a.from <= b.from && a.to >= b.to
) || (
a.from >= b.from && a.to <= b.to
)
})
};
const partialOverlap = (pairs) => {
return pairs.filter(({a, b}) => {
return a.from <= b.to && b.from <= a.to
})
}
const mainDayFourA = (inputString) => {
const pairs = parse(inputString);
const totalOverlapPairs = findTotalOverlaps(pairs);
return totalOverlapPairs.length;
}
const mainDayFourB = (inputString) => {
const pairs = parse(inputString);
const partialOverlaps = partialOverlap(pairs);
return partialOverlaps.length;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment