reference.js (1089B)
1 // Origin: https://github.com/DEVGOD2020/competitiveProgramming/blob/main/AdventOfCode/problems/2025/day5/2025-day5.js 2 3 let inputs = require('fs').readFileSync('input','utf8').split(/\r?\n\s/); 4 5 let input1 = inputs[0].split(/\r?\n/).map( (el)=> el.split("-").map( (el)=>Number(el) ) ); 6 let input2 = inputs[1].split(/\r?\n/).map( (el)=> Number(el) ); 7 8 let events = []; 9 10 for(let [start,end] of input1){ 11 events.push([start,1]); 12 events.push([end+1,-1]); 13 } 14 15 events.sort( (a,b)=> a[0] - b[0]); 16 17 let part1 = function(){ 18 let fresh = 0; 19 for(let ID of input2){ 20 let overlap = 0; 21 for(let I = 0; I<events.length; I++){ 22 let [time,type] = events[I]; 23 if(time > ID){break;} 24 overlap += type; 25 } 26 if(overlap > 0){fresh++;} 27 } 28 console.log(fresh); 29 } 30 31 let part2 = function(){ 32 let score = 0; 33 let overlap = 0; 34 let prev = events[0][0]; 35 for(let I = 0; I<events.length; I++){ 36 let [time,type] = events[I]; 37 overlap += type; 38 if(overlap == 0){ 39 score += time-prev; 40 prev = events[I+1]?.[0]||0; 41 } 42 } 43 console.log(score); 44 } 45 46 part1(); 47 part2();