-
Notifications
You must be signed in to change notification settings - Fork 0
/
01-2.ts
65 lines (52 loc) · 2.15 KB
/
01-2.ts
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
// --- Part Two ---
// Considering every single measurement isn't as useful as you expected: there's just too much noise in the data.
// Instead, consider sums of a three-measurement sliding window. Again considering the above example:
// 199 A
// 200 A B
// 208 A B C
// 210 B C D
// 200 E C D
// 207 E F D
// 240 E F G
// 269 F G H
// 260 G H
// 263 H
// Start by comparing the first and second three-measurement windows. The measurements in the first window are marked A (199, 200, 208); their sum is 199 + 200 + 208 = 607. The second window is marked B (200, 208, 210); its sum is 618. The sum of measurements in the second window is larger than the sum of the first, so this first comparison increased.
// Your goal now is to count the number of times the sum of measurements in this sliding window increases from the previous sum. So, compare A with B, then compare B with C, then C with D, and so on. Stop when there aren't enough measurements left to create a new three-measurement sum.
// In the above example, the sum of each three-measurement window is as follows:
// A: 607 (N/A - no previous sum)
// B: 618 (increased)
// C: 618 (no change)
// D: 617 (decreased)
// E: 647 (increased)
// F: 716 (increased)
// G: 769 (increased)
// H: 792 (increased)
// In this example, there are 5 sums that are larger than the previous sum.
// Consider sums of a three-measurement sliding window. How many sums are larger than the previous sum?
import * as fs from "fs";
import * as path from "path";
const main = async () => {
const raw = await fs.promises.readFile(
path.join(__dirname, "./01-1input"),
"utf8"
);
const lines = raw
.split("\n")
.slice(0, -1)
.map((item) => Number(item));
console.log(lines);
const newCompareArray = [];
for (let i = 1; i < lines.length - 1; i++) {
const currTotal = lines[i - 1] + lines[i] + lines[i + 1];
newCompareArray.push(currTotal);
}
let higherThanPreviousCount = 0;
for (let i = 1; i < newCompareArray.length; i++) {
if (newCompareArray[i] > newCompareArray[i - 1]) {
higherThanPreviousCount++;
}
}
console.log(higherThanPreviousCount); // 1518
};
main();