AdventOfCode2020/src/2020-day-05.ts

67 lines
1.5 KiB
TypeScript

import 'mocha';
import assert from 'assert';
import { readFileSync } from 'fs';
let input = readFileSync('./input/2020-day-05.txt', 'utf-8')
.split('\n');
let tasksResults: any[] = ['N/A', 'N/A'];
describe('Day 05', () => {
before(() => {
})
describe('task01', () => {
it('parse data', () => {
let d = ['BFFFBBFRRR', 'FFFBBBFRRR', 'BBFFBBFRLL'];
let out = task01(d);
assert.equal(out[0], 119);
assert.equal(out[1], 567);
assert.equal(out[2], 820);
let seats = task01(input);
tasksResults[0] = seats[seats.length - 1];
})
});
describe('test02', () => {
it('Calculate', () => {
tasksResults[1] = task02(input);
});
});
after(() => {
console.log('\ntask 01:', tasksResults[0]);
console.log('\ntask 02:', tasksResults[1]);
});
});
function task01(input: string[]): number[] {
return input
.filter(id => !!id)
.map(translate)
.sort((a, b) => a - b);
}
function task02(input: string[]) {
let all: number[] = task01(input);
for (let i = 0; i < all.length; i++) {
if (!all.includes(i) && all.includes(i - 1)) {
return i;
}
}
}
function translate(input: string): number {
return parseInt(
input.replace(/./g, (i => {
switch (i) {
case 'F':
case 'L':
return '0';
default:
return '1';
}
})), 2);
}