AdventOfCode/JS/day2/solution_b.mjs
Tobias Berger 67c52316c9
JavaScript Day 2
Signed-off-by: Tobias Berger <tobi.berger13@gmail.com>
2022-12-01 13:26:30 +01:00

34 lines
947 B
JavaScript

import * as fs from "fs";
const ENTRY_REGEX = /^(\d+?)-(\d+?) (\w?): (\w+)$/;
/**
* Main function for Puzzle A
*
* @param {string} data Puzzle input as a single string.
* @returns {number} Amount of valid passwords in puzzle input.
*/
async function main(data) {
const lines = data.split("\n").map((line) => line.trim());
const pass_data = lines.map((line) => line.match(ENTRY_REGEX));
let valid_passwords = [];
for (const entry of pass_data) {
if (!entry) throw new Error(`Failed to parse some data. ${entry}`);
const index1 = parseInt(entry[1]) - 1;
const index2 = parseInt(entry[2]) - 1;
const char = entry[3];
const pass = entry[4];
if ((pass[index1] === char) !== (pass[index2] === char)) {
valid_passwords.push(entry);
}
}
return valid_passwords.length;
}
fs.readFile("input", (err, data) => {
if (err) throw err;
main(data.toString()).then(console.log).catch(console.error);
});