advent-of-code

Entries to advent of code, multiple years
git clone git://git.finwo.net/misc/advent-of-code
Log | Files | Refs

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();