commit af593b517b9ab70e87e6f987cb9ca13b23d0c437
parent 1a8e4c43e5637684036883f481ca802341bb5ba2
Author: finwo <finwo@pm.me>
Date: Wed, 24 Dec 2025 18:57:42 +0100
2025-05 full solve thanks to devgod2020
Diffstat:
3 files changed, 75 insertions(+), 12 deletions(-)
diff --git a/2025/05/index.js b/2025/05/index.js
@@ -22,23 +22,26 @@ const queries = rawQueries
;
const compositeRanges = ranges.map(range => ({...range}));
+
for(let i = 0; i < compositeRanges.length; i++) {
const range = compositeRanges[i];
// Find the first range this low one matches
const foundLow = compositeRanges.find(({start,end}) => {
- if (range.start < start) return false;
- if (range.start > end ) return false;
- return true;
+ if (start <= range.start && range.start <= end) return true;
+ if (start <= range.end && range.end <= end) return true;
+ if (range.start <= start && start <= range.end) return true;
+ if (range.start <= end && end <= range.end) return true;
+ return false;
});
const foundLowIndex = compositeRanges.indexOf(foundLow);
// Merge with low range
if (i !== foundLowIndex) {
- process.stdout.write(`Merging ${foundLow.start}-${foundLow.end},${range.start}-${range.end} => `);
+ // process.stdout.write(`Merging ${foundLow.start}-${foundLow.end},${range.start}-${range.end} => `);
range.start = foundLow.start < range.start ? foundLow.start : range.start;
range.end = foundLow.end > range.end ? foundLow.end : range.end ;
- process.stdout.write(`${range.start}-${range.end}\n`);
+ // process.stdout.write(`${range.start}-${range.end}\n`);
compositeRanges.splice(foundLowIndex, 1);
i = -1;
continue;
@@ -46,9 +49,11 @@ for(let i = 0; i < compositeRanges.length; i++) {
// Find the first range this high one matches
const foundHigh = compositeRanges.find(({start,end}) => {
- if (range.end < start) return false;
- if (range.end > end ) return false;
- return true;
+ if (start <= range.start && range.start <= end) return true;
+ if (start <= range.end && range.end <= end) return true;
+ if (range.start <= start && start <= range.end) return true;
+ if (range.start <= end && end <= range.end) return true;
+ return false;
});
const foundHighIndex = compositeRanges.indexOf(foundHigh);
@@ -73,11 +78,14 @@ const part1 = queries
.length;
const part2 = compositeRanges
- .map(range => `${range.start}-${range.end} => ${range.end - range.start + 1n}`)
- // .map(range => (range.end - range.start + 1n))
- // .reduce((r,a) => r+a, 0n)
+ // .map(range => `${range.start}-${range.end} => ${range.end - range.start + 1n}`)
+ .map(range => (range.end - range.start + 1n))
+ .reduce((r,a) => r+a, 0n)
+
+console.log(compositeRanges.map(range => `${range.start}-${range.end} => ${range.end - range.start + 1n}`));
+console.log(compositeRanges.find(range => range.start > range.end));
-console.log(part2.join('\n'));
+// console.log(part2.join('\n'));
process.stdout.write(`------[ Part 1: ${part1} ]------\n`);
process.stdout.write(`------[ Part 2: ${part2} ]------\n`);
diff --git a/2025/05/reference.js b/2025/05/reference.js
@@ -0,0 +1,47 @@
+// Origin: https://github.com/DEVGOD2020/competitiveProgramming/blob/main/AdventOfCode/problems/2025/day5/2025-day5.js
+
+let inputs = require('fs').readFileSync('input','utf8').split(/\r?\n\s/);
+
+let input1 = inputs[0].split(/\r?\n/).map( (el)=> el.split("-").map( (el)=>Number(el) ) );
+let input2 = inputs[1].split(/\r?\n/).map( (el)=> Number(el) );
+
+let events = [];
+
+for(let [start,end] of input1){
+ events.push([start,1]);
+ events.push([end+1,-1]);
+}
+
+events.sort( (a,b)=> a[0] - b[0]);
+
+let part1 = function(){
+ let fresh = 0;
+ for(let ID of input2){
+ let overlap = 0;
+ for(let I = 0; I<events.length; I++){
+ let [time,type] = events[I];
+ if(time > ID){break;}
+ overlap += type;
+ }
+ if(overlap > 0){fresh++;}
+ }
+ console.log(fresh);
+}
+
+let part2 = function(){
+ let score = 0;
+ let overlap = 0;
+ let prev = events[0][0];
+ for(let I = 0; I<events.length; I++){
+ let [time,type] = events[I];
+ overlap += type;
+ if(overlap == 0){
+ score += time-prev;
+ prev = events[I+1]?.[0]||0;
+ }
+ }
+ console.log(score);
+}
+
+part1();
+part2();
diff --git a/2025/05/test.txt b/2025/05/test.txt
@@ -0,0 +1,8 @@
+1-1
+2-2
+3-3
+1-3
+
+1
+2
+3