adventofcode2023/02/code.js

84 lines
1.8 KiB
JavaScript
Raw Normal View History

2023-12-18 19:41:29 +00:00
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