advent-of-code-2022/day04/index.js

44 lines
1.3 KiB
JavaScript
Raw Permalink Normal View History

2022-12-04 14:35:31 +00:00
import { readFileSync } from "fs";
const input = readFileSync("pairs.txt", "utf-8");
const assignments = [];
2022-12-04 14:42:22 +00:00
let pairs, countPairs = 0, countOverlap = 0;
2022-12-04 14:35:31 +00:00
input.split('\n').forEach(pair => {
for(let i = 0; i < 2; i++) {
assignments[i] = [];
for(let j = 0; j < 99; j++) {
assignments[i][j] = ".";
}
}
pairs = pair.split(',');
const betweenOne = pairs[0].split('-').map(x => parseInt(x));
const betweenTwo = pairs[1].split('-').map(x => parseInt(x));
for(let i = betweenOne[0]; i <= betweenOne[1]; i++) {
assignments[0][i - 1] = i;
}
for(let i = betweenTwo[0]; i <= betweenTwo[1]; i++) {
assignments[1][i - 1] = i;
}
2022-12-04 14:42:22 +00:00
let isOneInside = true, isTwoInside = true, foundOverlap = false;
2022-12-04 14:35:31 +00:00
for(let i = 0; i < 99; i++) {
if(assignments[0][i] !== "." && assignments[0][i] !== assignments[1][i]) isOneInside = false;
if(assignments[1][i] !== "." && assignments[0][i] !== assignments[1][i]) isTwoInside = false;
2022-12-04 14:42:22 +00:00
if(assignments[0][i] !== "." && assignments[0][i] === assignments[1][i] && !foundOverlap) {
foundOverlap = true;
countOverlap++;
}
2022-12-04 14:35:31 +00:00
}
if(isOneInside || isTwoInside) countPairs++;
});
2022-12-04 14:42:22 +00:00
console.log(countPairs)
console.log(countOverlap)