Solve 2025-05

This commit is contained in:
2025-12-05 08:46:03 +01:00
parent fed21d417d
commit ef9e5ba9a8
4 changed files with 77 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
import type { Coordinate } from '../../utils/coordinates.ts';
function parseRanges(input: string) {
return Array.from(
input.matchAll(/(\d*)-(\d*)/gm),
(m) => [Number(m[1]), Number(m[2])] as Coordinate
);
}
export function solveFirst(input: string): number {
const [r, i] = input.split('\n\n');
const ranges = parseRanges(r);
const ingredients = i.split('\n').map(Number);
return ingredients.filter((i) =>
ranges.some(([from, to]) => i >= from && i <= to)
).length;
}
export function solveSecond(input: string): number {
const ranges = parseRanges(input).toSorted((a, b) => a[0] - b[0]);
let total = 0;
ranges.reduce((lastEnd, curr) => {
if (curr[1] <= lastEnd) {
return lastEnd;
}
total += curr[1] - Math.max(lastEnd + 1, curr[0]) + 1;
return curr[1];
}, 0);
return total;
}