Add '2020/' from commit 'aaabfa90c9033044d0a9d5fe6776b718711ef46c'
git-subtree-dir: 2020 git-subtree-mainline:ab8f135946
git-subtree-split:aaabfa90c9
This commit is contained in:
36
2020/05/part2.js
Normal file
36
2020/05/part2.js
Normal file
@@ -0,0 +1,36 @@
|
||||
const fs = require('fs');
|
||||
const readline = require('readline');
|
||||
const readInterface = readline.createInterface({input: fs.createReadStream('input'), console: false});
|
||||
|
||||
let seats = []; // [[x,y], [x,y], ...]
|
||||
|
||||
readInterface.on('line', function(line) {
|
||||
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);
|
||||
|
||||
switch(char) {
|
||||
case 'F': sp[3] -= halfY; break;
|
||||
case 'B': sp[1] += halfY; break;
|
||||
case 'L': sp[2] -= halfX; break;
|
||||
case 'R': sp[0] += halfX; break;
|
||||
};
|
||||
|
||||
return sp;
|
||||
}, [0,0,7,127]);
|
||||
|
||||
seats.push([result[0], result[1]]);
|
||||
});
|
||||
|
||||
readInterface.on('close', function(line) {
|
||||
let seatIDs = new Set( seats.map((seat) => seat[1]*8 + seat[0]) );
|
||||
|
||||
for (x=0; x<8; x++) {
|
||||
for(y=0; y<128; y++) {
|
||||
let seatID = y*8+x;
|
||||
if (!seatIDs.has(seatID) && seatIDs.has(seatID-1) && seatIDs.has(seatID+1)) {
|
||||
console.log(seatID);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
Reference in New Issue
Block a user