Oliver Kaup 463715f582 day 1
2024-12-10 20:44:04 +01:00

77 lines
2.3 KiB
TypeScript

export async function solveTask1part1() {
const decoder = new TextDecoder("utf-8");
const inputData = await Deno.readFile('./1/input.txt');
const input = decoder.decode(inputData);
// console.log(input.substring(0,50) + '...');
const lines = input.split('\n')
.filter( l => l.trim() !== '');
console.log('lines', lines.slice(0, 5));
const lefts = lines.map( line => {
const leftStr = line.substring(0, line.indexOf(' ')).trim();
const left = parseInt(leftStr);
return left
}).sort();
const rights = lines.map( line => {
const rightStr = line.substring(line.indexOf(' ')).trim();
const right = parseInt(rightStr);
return right
}).sort();
console.log('lefts', lefts.slice(0, 5));
console.log('rights', rights.slice(0, 5));
const diffs = []
for (let i = 0; i < lines.length; i++) {
const left = lefts[i];
const right = rights[i];
diffs.push(Math.abs(right - left));
}
const diffSum = diffs
.reduce( (p, c) => p + c, 0);
console.log('diffSum', diffSum);
}
export async function solveTask1part2() {
const decoder = new TextDecoder("utf-8");
const inputData = await Deno.readFile('./1/input.txt');
const input = decoder.decode(inputData);
const lines = input.split('\n')
.filter( l => l.trim() !== '');
console.log('lines', lines.slice(0, 5));
const lefts = lines.map( line => {
const leftStr = line.substring(0, line.indexOf(' ')).trim();
const left = parseInt(leftStr);
return left
}).sort();
const rights = lines.map( line => {
const rightStr = line.substring(line.indexOf(' ')).trim();
const right = parseInt(rightStr);
return right
}).sort();
console.log('lefts', lefts.slice(0, 5));
console.log('rights', rights.slice(0, 5));
const scores = []
let iR = 0;
for (let i = 0; i < lines.length; i++) {
const left = lefts[i];
let multiplyer = 0;
while (rights[iR] < left) {
iR++;
}
while (rights[iR] === left) {
multiplyer++;
iR++;
}
scores.push(left * multiplyer);
}
const scoreSum = scores
.reduce( (p, c) => p + c, 0);
console.log('scoreSum', scoreSum);
}