generated from eric/adventofcode2023
Initial commit
This commit is contained in:
83
02/code.js
Normal file
83
02/code.js
Normal file
@@ -0,0 +1,83 @@
|
||||
const fs = require('fs');
|
||||
|
||||
// const inputArray = fs.readFileSync('sample.txt').toString().split("\n");
|
||||
const inputArray = fs.readFileSync('input.txt').toString().split("\n");
|
||||
|
||||
let redMax = 0;
|
||||
let greenMax = 0;
|
||||
let blueMax = 0;
|
||||
|
||||
// Part One
|
||||
|
||||
redMax = 12;
|
||||
greenMax = 13;
|
||||
blueMax = 14;
|
||||
|
||||
const possibleGames = [];
|
||||
|
||||
for (i in inputArray) {
|
||||
let possible = true;
|
||||
|
||||
const contents = inputArray[i].split(":");
|
||||
const gameID = parseInt(contents[0].split(" ")[1]);
|
||||
const draws = contents[1].split(";");
|
||||
for (d in draws) {
|
||||
const cubes = draws[d].split(",");
|
||||
for (c in cubes) {
|
||||
const parts = cubes[c].trim().split(" ");
|
||||
const val = parseInt(parts[0]);
|
||||
const color = parts[1];
|
||||
if (color === "red" && val > redMax) {
|
||||
possible = false;
|
||||
} else if (color === "green" && val > greenMax) {
|
||||
possible = false;
|
||||
} else if (color === "blue" && val > blueMax) {
|
||||
possible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (possible) {
|
||||
possibleGames.push(gameID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
console.log(possibleGames.reduce((a, b) => a + b, 0));
|
||||
|
||||
|
||||
// Part Two
|
||||
|
||||
const powers = [];
|
||||
|
||||
for (i in inputArray) {
|
||||
redMax = 0;
|
||||
greenMax = 0;
|
||||
blueMax = 0;
|
||||
|
||||
const contents = inputArray[i].split(":");
|
||||
const draws = contents[1].split(";");
|
||||
for (d in draws) {
|
||||
const cubes = draws[d].split(",");
|
||||
for (c in cubes) {
|
||||
const parts = cubes[c].trim().split(" ");
|
||||
const val = parseInt(parts[0]);
|
||||
const color = parts[1];
|
||||
if (color === "red" && val > redMax) {
|
||||
redMax = val;
|
||||
} else if (color === "green" && val > greenMax) {
|
||||
greenMax = val;
|
||||
} else if (color === "blue" && val > blueMax) {
|
||||
blueMax = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
powers.push(redMax * greenMax * blueMax);
|
||||
|
||||
}
|
||||
|
||||
console.log(powers.reduce((a, b) => a + b, 0));
|
||||
|
||||
// functions
|
||||
|
||||
Reference in New Issue
Block a user