Day 01

import Solution from "./solution.ts";

const mod = (n: number, d: number) => ((n % d) + d) % d;

const task = new Solution(
  (arr: ["L" | "R", number][]) =>
    arr.reduce((p, c) => {
      const n = p.curr + (c[0] === "L" ? -c[1] : c[1]);
      p.curr = mod(n, 100);
      if (p.curr === 0) p.count++;
      return p;
    }, { count: 0, curr: 50 }).count,
  (arr: ["L" | "R", number][]) =>
    arr.reduce((p, c) => {
      const s = p.curr;
      const n = p.curr + (c[0] === "L" ? -c[1] : c[1]);
      p.curr = mod(n, 100);
      p.count += Math.floor(Math.abs(n) / 100);
      if (n <= 0 && s !== 0) p.count++;
      return p;
    }, { count: 0, curr: 50 }).count,
  {
    sep: "\n",
    transform: (s) =>
      [s[0], Number.parseInt(s.slice(1))] as ["L" | "R", number],
  },
);
task.expect(3, 6);

export default task;

Last edited 03. December 2025 09:50