summaryrefslogtreecommitdiff
path: root/aoc_2023/day0/main_2.js
diff options
context:
space:
mode:
authorElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-11-30 22:46:45 -0700
committerElizabeth Hunt <elizabeth.hunt@simponic.xyz>2023-11-30 22:46:45 -0700
commit3d57434c04a669610d5f15bd2a7713e6928cdef7 (patch)
treea0f1f04a335bbc808369d6492f4fee2ff06a0bdb /aoc_2023/day0/main_2.js
parent59966ade163a39fc03f07a9d905e0bd87a98d60c (diff)
downloadaoc-3d57434c04a669610d5f15bd2a7713e6928cdef7.tar.gz
aoc-3d57434c04a669610d5f15bd2a7713e6928cdef7.zip
add aoc2023
Diffstat (limited to 'aoc_2023/day0/main_2.js')
-rw-r--r--aoc_2023/day0/main_2.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/aoc_2023/day0/main_2.js b/aoc_2023/day0/main_2.js
new file mode 100644
index 0000000..3ba05be
--- /dev/null
+++ b/aoc_2023/day0/main_2.js
@@ -0,0 +1,43 @@
+const fs = require("node:fs");
+
+const digits = {
+ one: 1,
+ two: 2,
+ three: 3,
+ four: 4,
+ five: 5,
+ six: 6,
+ seven: 7,
+ eight: 8,
+ nine: 9,
+};
+
+const data = fs.readFileSync("input.txt", "utf8");
+
+const res = data
+ .split("\n")
+ .filter((line) => line && line != "")
+ .map((line) => {
+ let newLine = "";
+ for (let i = 0; i < line.length; i++) {
+ for (let j = i + 1; j < line.length + 1; j++) {
+ const word = line.substring(i, j);
+ if (word.match(/^[0-9]$/)) {
+ newLine += word;
+ }
+ if (word in digits) {
+ newLine += digits[word].toString();
+ }
+ }
+ }
+ return newLine;
+ })
+ .reduce((acc, line) => {
+ const nums = line.split("");
+ const first = parseInt(nums.at(0));
+ const last = parseInt(nums.at(-1));
+
+ return acc + (first * 10 + last);
+ }, 0);
+
+console.log(res);