Day 03

import Solution from "./solution.ts";

const task = new Solution(
  (arr: string[]) => {
    return arr.reduce(
      (s, str) =>
        s + [...str.matchAll(/mul\((\d{1,3}),(\d{1,3})\)/g)].reduce(
          (p, c) =>
            p + c.slice(1).reduce((pn, cn) => pn * Number.parseInt(cn), 1),
          0,
        ),
      0,
    );
  },
  (arr: string[]) => {
    const reg = /(?:mul\((\d{1,3}),(\d{1,3})\)|don't\(\)|do\(\))/gs;
    let match;
    let sum = 0;
    let allow = true;
    while ((match = reg.exec(arr[0])) !== null) {
      if (match[0] === "do()") allow = true;
      else if (match[0] === "don't()") allow = false;
      else if (allow) {
        sum += match.slice(1).reduce((p, c) => p * Number.parseInt(c), 1);
      }
    }
    return sum;
  },
  {
    sep: "\n\n",
  },
);
task.expect(161, 48);

export default task;

Last edited 04. April 2025 13:29