solution: 2025/5
Signed-off-by: Alix von Schirp <github@avonschirp.bootmedia.de>
This commit is contained in:
28
src/2025/5/1/index.ts
Normal file
28
src/2025/5/1/index.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
export default async function runner(inputPath: string) {
|
||||
const input = (await Bun.file(inputPath).text()).trimEnd();
|
||||
|
||||
let fresh = 0;
|
||||
|
||||
const inrange: { min: number, max: number }[] = [];
|
||||
|
||||
const [ranges, stored] = input.split("\n\n").map(value => value.trim());
|
||||
|
||||
ranges!.split("\n").map(value => value.trim()).filter(value => value !== "").forEach(value => {
|
||||
const [min, max] = value.split("-").map(value => parseInt(value));
|
||||
|
||||
if (!min || !max) return;
|
||||
|
||||
inrange.push({min, max})
|
||||
|
||||
})
|
||||
|
||||
stored!.split("\n").map(value => value.trim()).filter(value => value !== "").map(value => parseInt(value)).forEach(value => {
|
||||
if (inrange.some(({min, max}) => {
|
||||
return (min <= value && value <= max);
|
||||
})) {
|
||||
fresh++;
|
||||
}
|
||||
})
|
||||
|
||||
console.log(fresh);
|
||||
}
|
||||
44
src/2025/5/2/index.ts
Normal file
44
src/2025/5/2/index.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
export default async function runner(inputPath: string) {
|
||||
const input = (await Bun.file(inputPath).text()).trimEnd();
|
||||
|
||||
let fresh = 0;
|
||||
|
||||
const inrange: { min: number, max: number }[] = [];
|
||||
|
||||
const [ranges, _stored] = input.split("\n\n").map(value => value.trim());
|
||||
|
||||
ranges!.split("\n").map(value => value.trim()).filter(value => value !== "").forEach(value => {
|
||||
const [min, max] = value.split("-").map(value => parseInt(value));
|
||||
|
||||
if (!min || !max) return;
|
||||
|
||||
inrange.push({min, max})
|
||||
|
||||
})
|
||||
|
||||
inrange.sort((a, b) => {
|
||||
if(a.min !== b.min) return a.min-b.min;
|
||||
return a.max-b.max;
|
||||
})
|
||||
|
||||
|
||||
const mergedRanges: {min: number, max: number}[] = [];
|
||||
|
||||
inrange.forEach(value => {
|
||||
if(mergedRanges.length === 0) {
|
||||
mergedRanges.push(value);
|
||||
return;
|
||||
}
|
||||
if(mergedRanges[mergedRanges.length-1]!.max >= value.min) {
|
||||
if(mergedRanges[mergedRanges.length-1]!.max < value.max) mergedRanges[mergedRanges.length-1]!.max = value.max
|
||||
} else {
|
||||
mergedRanges.push(value)
|
||||
}
|
||||
})
|
||||
|
||||
mergedRanges.forEach(({min, max}) => {
|
||||
fresh += max-min+1;
|
||||
})
|
||||
|
||||
console.log(fresh);
|
||||
}
|
||||
Reference in New Issue
Block a user