AoC/2022/day3.js

37 lines
944 B
JavaScript
Raw Normal View History

2022-12-03 09:06:51 +01:00
const readline = require('readline');
const fs = require('fs');
function calculate_score(input) {
if ('a' <= input && input <= 'z') {
return input.charCodeAt(0) - 'a'.charCodeAt(0) + 1;
} else if ('A' <= input && input <= 'Z') {
return input.charCodeAt(0) - 'A'.charCodeAt(0) + 27;
} else {
throw `Invalid character '${input}'`
}
}
async function puzzle() {
const lines = readline.createInterface({
input: fs.createReadStream('day3.input'),
});
var score = 0;
for await (const line of lines) {
const mid = line.length / 2;
const first = line.substring(0, mid);
const second = new Set(line.substring(mid));
for (const character of first) {
if (second.has(character)) {
score += calculate_score(character);
break;
}
}
}
console.log(`Part 1: Score ${score}`);
}
puzzle();