1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import { loadInput, numericAscSort } from "../common.js";
- const input = loadInput(1, parseInput);
- solve(input);
- /**
- * @param {string} inputData
- * @returns {number[][]}
- */
- function parseInput(inputData) {
- // Split the input into lines, and then split each line into two numbers
- const lines = inputData.split(/\n/);
- let leftList = [];
- let rightList = [];
- // split each line into two numbers, then add those to the left and right lists
- for(const line of lines) {
- const [l, r] = line.split(/\s+/).map((num) => parseInt(num, 10));
- leftList.push(l);
- rightList.push(r);
- }
- leftList.sort(numericAscSort);
- rightList.sort(numericAscSort);
- return [leftList, rightList];
- }
- /**
- * @param {number[][]} parsedInput
- */
- function solve(parsedInput) {
- // separate out the already sorted left and right list
- const [leftList, rightList] = parsedInput;
- // Create a list to store the differences between the left and right list
- const deltaList = [];
- while(leftList.length) {
- deltaList.push(Math.abs(rightList.shift() - leftList.shift()));
- }
- console.log("List Distance: ", eval(deltaList.join("+")));
- }
|