29 lines
720 B
TypeScript
29 lines
720 B
TypeScript
import fs from 'node:fs';
|
|
|
|
|
|
const file = fs.readFileSync('./2024/inputs/1').toString();
|
|
const left: number[] = []
|
|
const right: number[] = []
|
|
const leftOccurences: {[key:number]:number} = {}
|
|
const rightOccurences: {[key:number]:number} = {}
|
|
|
|
const regexes = file.matchAll(/^(\d+) (\d+)$/gm)
|
|
|
|
for(const match of regexes){
|
|
const leftNumber = Number(match[1])
|
|
const rightNumber = Number(match[2])
|
|
left.push(leftNumber)
|
|
right.push(rightNumber)
|
|
|
|
if(!(rightNumber in rightOccurences)){
|
|
rightOccurences[rightNumber] = 0
|
|
}
|
|
rightOccurences[rightNumber]++
|
|
}
|
|
|
|
const result = left.reduce((_prev, curr, index)=>{
|
|
return _prev + (curr * (rightOccurences[curr] ?? 0))
|
|
},0)
|
|
|
|
console.log(result)
|