/** * Answer normalizer: uppercase → strip accents → drop everything except A-Z and 0-9. * "20:40" and "20 40" → "2040"; "Fire Swart, Friday!" → "FIRESWARTFRIDAY". */ export function normalizeAnswer(input: string): string { return String(input) .toUpperCase() .normalize('NFD') .replace(/[̀-ͯ]/g, '') .replace(/[^A-Z0-9]/g, ''); } /** True if the normalized input equals any normalized accepted answer. */ export function matchesAnswer(input: string, answers: readonly string[]): boolean { const value = normalizeAnswer(input); if (value === '') return false; return answers.some((answer) => normalizeAnswer(answer) === value); }