From ecab4f263a8c6f6cf61267a8d79485d5e80fe05a Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Sun, 1 Dec 2024 15:49:08 -0700 Subject: [PATCH] Get day one finished --- day_01/javascript/part1.mjs | 31 +++++++++++++++++++++++++++++++ day_01/javascript/part2.mjs | 26 ++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 day_01/javascript/part1.mjs create mode 100644 day_01/javascript/part2.mjs diff --git a/day_01/javascript/part1.mjs b/day_01/javascript/part1.mjs new file mode 100644 index 0000000..1994cb9 --- /dev/null +++ b/day_01/javascript/part1.mjs @@ -0,0 +1,31 @@ +import { readFile } from "fs/promises"; +import { SortedList } from "../../utils/javascript/SortedList.mjs"; + + +const fileToRead = `actual.input`; + +const list1 = new SortedList(); +const list2 = new SortedList(); + +const file = await readFile(fileToRead, `utf-8`); +for (const line of file.split(`\n`)) { + // console.log(line); + const [ l1Add, l2Add ] = line.split(/\s+/, 2); + list1.add(l1Add); + list2.add(l2Add); +}; + +if (list1.size !== list2.size) { + console.log(`The two lists are different lengths`); + process.exit(1); +}; + +const size = list1.size; +let distance = 0; +for (var i = 0; i < size; i++) { + const place1 = list1.at(i); + const place2 = list2.at(i); + distance += Math.abs(place2 - place1); +} + +console.log(`Total Distance: ${distance}`); diff --git a/day_01/javascript/part2.mjs b/day_01/javascript/part2.mjs new file mode 100644 index 0000000..0536ec1 --- /dev/null +++ b/day_01/javascript/part2.mjs @@ -0,0 +1,26 @@ +import { readFile } from "fs/promises"; + + +const fileToRead = `actual.input`; + +const list1 = {}; +const list2 = {}; + +const file = await readFile(fileToRead, `utf-8`); + +for (const line of file.split(`\n`)) { + const [ l1Add, l2Add ] = line.split(/\s+/, 2); + + list1[l1Add] ??= 0; + list1[l1Add] += 1; + + list2[l2Add] ??= 0; + list2[l2Add] += 1; +}; + +let similarity = 0; +for (const location in list1) { + similarity += list1[location] * (location * (list2[location] ?? 0)) +}; + +console.log(`Similarity: ${similarity}`);