For a description of this problem, please check the Advent of Code website.
Example Input:
3 44 32 51 33 93 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);