// DISCLAIMER : DOES NOT WORKS import fs from 'node:fs'; const file = fs.readFileSync('./2025/inputs/5').toString(); const [strRanges, _] = file.split("\n\n").map(e => e.split("\n")) const ranges = strRanges.map(e => { const [min, max] = e.split("-") return [Number(min), Number(max)] }) const t = ranges.find(r => r[0] > r[1]) console.log(t) function mergeRange(r: number[], validRanges: number[][]) { const minR = isInRange(r[0], validRanges) const maxR = isInRange(r[1], validRanges) if (maxR) { validRanges.splice(validRanges.indexOf(maxR), 1) maxR[0] = Math.min(maxR[0], r[0]) return mergeRange(maxR, validRanges) } if (minR) { validRanges.splice(validRanges.indexOf(minR), 1) minR[1] = Math.max(minR[1], r[1]) return mergeRange(minR, validRanges) } validRanges.push(r) } const validRanges: number[][] = [] for (const r of ranges) { mergeRange(r, validRanges) } const result = validRanges.reduce((acc, [min, max]) => { return acc + (max - min) + 1 }, 0) const testRanges: number[][] = [] for (const r of validRanges) { mergeRange(r, testRanges) } console.log(validRanges.toString() == testRanges.toString()) function isInRange(i: number, r: number[][]) { return r.find(([min, max]: number[]) => { return (i >= min && max >= i) }) } console.log(result)