expeditaet
Version:
Advent of Code Solutions
20 lines (15 loc) • 833 B
text/typescript
import { Interval, task } from '@alexaegis/advent-of-code-lib';
import { sum } from '@alexaegis/advent-of-code-lib/math';
import packageJson from '../package.json';
import { parse } from './parse.function.js';
export const checkField = (ticketField: number, fieldRanges: Interval[][]): boolean =>
fieldRanges.some((ranges) => ranges.some((range) => range.contains(ticketField)));
export const invalidFields = (ticket: number[], rangeMap: Map<string, Interval[]>): number[] => {
const ranges = [...rangeMap.values()];
return ticket.filter((field) => !checkField(field, ranges));
};
export const p1 = (input: string): number => {
const { fieldRanges, nearbyTickets } = parse(input);
return nearbyTickets.flatMap((ticket) => invalidFields(ticket, fieldRanges)).reduce(sum);
};
await task(p1, packageJson.aoc); // 27870 ~0.60ms