Files
advent-of-code/04/part1.js
2020-12-04 09:26:15 +00:00

54 lines
1.1 KiB
JavaScript

const fs = require('fs')
const readline = require('readline');
const readInterface = readline.createInterface({
input: fs.createReadStream('input'),
console: false
});
let passports = [];
let cPass = {};
readInterface.on('line', function(line) {
if (line.length == 0) {
passports.push(cPass);
cPass = {};
return;
}
line.split(' ').forEach(function(kv) {
parts = kv.split(':');
cPass[parts[0]] = parts[1];
});
// console.log(cPass);
});
let required = new Set(['byr', 'iyr', 'eyr', 'hgt', 'hcl', 'ecl', 'pid' ]);
let optional = new Set([ 'cid' ]);
readInterface.on('close', function(line) {
// Save the last passport if it has any fields
if (Object.keys(cPass).length > 0) {
passports.push(cPass);
}
let count = 0;
passports.forEach(function(passport) {
let keys = new Set(Object.keys(passport));
let missing = new Set([...required].filter(x => !keys.has(x)))
console.log(passport);
console.log(missing);
console.log("");
if (missing.size == 0) {
count++;
}
});
console.log(count);
});