AOC Solutions

For a description of this problem, please check the Advent of Code website.

Example Input:

3 4
4 3
2 5
1 3
3 9
3 3

Part 1 Solution:

const fs = require('fs');
const data = fs.readFileSync('./input.txt', 'utf8');
const lines = data.trim().split('\n');
const leftList = [];
const rightList = [];
for (let line of lines) {
const [leftNum, rightNum] = line.trim().split(/\s+/).map(Number);
leftList.push(leftNum);
rightList.push(rightNum);
rightList.sort();
leftList.sort();
}
const totalDistance = leftList.reduce((accumulator, currentValue, index) => {
const distance = Math.abs(currentValue - rightList[index]);
return accumulator + distance;
}, 0);
console.log(totalDistance);

Part 2 Solution:

import fs from 'fs';
const data = fs.readFileSync('input.txt', 'utf8');
const lines = data.trim().split('\n');
const leftList = [];
const rightList = [];
for (let line of lines) {
const [leftNum, rightNum] = line.trim().split(/\s+/).map(Number);
leftList.push(leftNum);
rightList.push(rightNum);
}
const map = new Map();
for (let num of rightList) {
map.set(num, (map.get(num) || 0) + 1);
}
const similarityScore = leftList.reduce((accumulator, num) => {
return accumulator + num * (map.get(num) || 0);
}, 0);
console.log(similarityScore);