Files
advent-of-code/2020/05/part1.js

34 lines
851 B
JavaScript
Raw Normal View History

2020-12-05 11:25:51 +00:00
const fs = require('fs')
const readline = require('readline');
const readInterface = readline.createInterface({
input: fs.createReadStream('input'),
console: false
});
2020-12-05 14:11:59 +00:00
let seats = []; // [[x,y], [x,y], ...]
2020-12-05 11:25:51 +00:00
readInterface.on('line', function(line) {
2020-12-05 14:11:59 +00:00
let result = line.split('').reduce(function(sp, char) {
const halfX = Math.floor((1 + sp[2] - sp[0]) / 2);
const halfY = Math.floor((1 + sp[3] - sp[1]) / 2);
2020-12-05 11:25:51 +00:00
switch(char) {
2020-12-05 14:11:59 +00:00
case 'F': sp[3] -= halfY; break;
case 'B': sp[1] += halfY; break;
case 'L': sp[2] -= halfX; break;
case 'R': sp[0] += halfX; break;
2020-12-05 11:25:51 +00:00
};
2020-12-05 14:11:59 +00:00
return sp;
}, [0,0,7,127]);
2020-12-05 11:25:51 +00:00
2020-12-05 14:11:59 +00:00
seats.push([result[0], result[1]]);
2020-12-05 11:25:51 +00:00
});
readInterface.on('close', function(line) {
let seatIDs = seats.map((seat) => (seat[1] * 8) + seat[0]).sort((a,b) => a-b );
console.log(seatIDs.reverse()[0]);
});