Files
advent-of-code/05/part1.js
2020-12-05 11:25:51 +00:00

57 lines
1.2 KiB
JavaScript

const fs = require('fs')
const readline = require('readline');
const readInterface = readline.createInterface({
input: fs.createReadStream('input'),
console: false
});
// [[x,y], [x,y], ...]
let seats = [];
function makeArray(n) {
let ary = new Array(n);
for(i=0; i<n; i++) {
ary[i] = i;
}
return ary;
}
readInterface.on('line', function(line) {
const rowSpec = line.substring(0, 7);
const colSpec = line.substring(7, 10);
let row = rowSpec.split('').reduce(function(range, char) {
const half = Math.floor(range.length / 2);
let r2 = range;
switch(char) {
case 'F': r2 = range.slice(0, half+1); break;
case 'B': r2 = range.slice(half, range.length); break;
};
return r2;
}, makeArray(128));
let col = colSpec.split('').reduce(function(range, char) {
const half = Math.floor(range.length / 2);
let r2 = range;
switch(char) {
case 'L': r2 = range.slice(0, half+1); break;
case 'R': r2 = range.slice(half,range.length); break;
};
return r2;
}, makeArray(8));
seats.push([col[0], row[0]]);
});
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]);
});