UNPKG

expeditaet

Version:
37 lines (32 loc) 954 B
import { isNotNullish, task } from '@alexaegis/advent-of-code-lib'; import packageJson from '../package.json'; import { closingTagMap, isOpeningTag, type ClosingTag, type OpeningTag } from './model/index.js'; const scoreMap: Record<ClosingTag, number> = { ')': 3, ']': 57, '}': 1197, '>': 25_137, }; export const getFirstCorruptTag = (line: string): ClosingTag | undefined => { const chars = [...line] as (OpeningTag | ClosingTag)[]; const openStack: OpeningTag[] = []; for (const char of chars) { if (isOpeningTag(char)) { openStack.push(char); } else { const lastOpeningTag = openStack.pop(); if (lastOpeningTag && char !== closingTagMap[lastOpeningTag]) { return char; } } } return undefined; }; export const p1 = (input: string): number => input .lines() .map(getFirstCorruptTag) .filter(isNotNullish) .map((closingTag) => scoreMap[closingTag]) .sum(); await task(p1, packageJson.aoc); // 193275 ~0.27ms