-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathday_1.js
68 lines (59 loc) · 1.41 KB
/
day_1.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
const fs = require("node:fs");
fs.readFile("./day_1.txt", "utf8", (err, data) => {
if (err) {
console.error(err);
return;
}
const lines = data.split("\n");
console.log(part2(lines));
});
const numbersWritten = [
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine",
];
function part2(lines) {
let count = 0;
return lines
.map((word) => {
firstDigit = findDigit(word.split(""), numbersWritten);
secondDigit = findDigit(
reverse(word).split(""),
numbersWritten.map((num) => reverse(num))
);
return firstDigit + secondDigit;
})
.reduce((acc, cur) => acc + parseInt(cur), 0);
}
function reverse(string) {
return string.split("").reverse().join("");
}
function findDigit(chars, numbersWritten) {
let discoveredChars = "";
for (const char of chars) {
if (["1", "2", "3", "4", "5", "6", "7", "8", "9"].includes(char)) {
return char;
}
discoveredChars = discoveredChars.concat(char);
for (const index in numbersWritten) {
if (discoveredChars.includes(numbersWritten[index])) {
return "".concat(parseInt(index) + 1);
}
}
}
}
function first(lines) {
result = lines
.map((code) => {
const numbers = code.match(/\d/g);
return numbers.at(0).concat(numbers.at(numbers.length - 1));
})
.reduce((acc, cur) => acc + parseInt(cur), 0);
console.log(result);
}