-
Notifications
You must be signed in to change notification settings - Fork 0
/
day2.ts
56 lines (50 loc) · 1.7 KB
/
day2.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
export function day2(lines: string[]): void {
const numRedCubes: number = 12;
const numGreenCubes: number = 13;
const numBlueCubes: number = 14;
let powerSum: number = 0;
let sum: number = 0;
for (let line of lines) {
if (line.trim() === '') {
continue;
}
let id: number = parseInt(line.split(' ')[1]);
let sets: string[] = line.split(':')[1].split(';');
let possible: boolean = true;
var maxRed: number = 0;
var maxGreen: number = 0;
var maxBlue: number = 0;
for (let set of sets) {
let cubes: string[] = set.split(',');
for (let cube of cubes) {
cube = cube.trim();
let num: number = parseInt(cube.split(' ')[0]);
let color: string = cube.split(' ')[1];
if (color === 'red') {
maxRed = Math.max(maxRed, num);
if (num > numRedCubes) {
possible = false;
}
}
if (color === 'green') {
maxGreen = Math.max(maxGreen, num);
if (num > numGreenCubes) {
possible = false;
}
}
if (color === 'blue') {
maxBlue = Math.max(maxBlue, num);
if (num > numBlueCubes) {
possible = false;
}
}
}
}
powerSum += maxRed * maxGreen * maxBlue;
if (possible) {
sum += id;
}
}
console.log("Solution Part I: " + sum);
console.log("Solution Part II: " + powerSum);
}