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); }