77 lines
2.3 KiB
TypeScript
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);
|
|
}
|