Day 01

import Solution from "./solution.ts";

const task = new Solution(
  (arr: number[][]) => {
    const sorted = arr.reduce(([a, b], [ca, cb]) => [[...a, ca], [...b, cb]], [
      [] as number[],
      [] as number[],
    ]).map((a) => a.sort());
    return sorted[0].reduce((p, c, i) => p + (Math.abs(c - sorted[1][i])), 0);
  },
  (arr: number[][]) => {
    const left = new Map<number, number>();
    const right = new Map<number, number>();
    for (const c of arr) {
      left.set(c[0], (left.get(c[0]) ?? 0) + 1);
      right.set(c[1], (right.get(c[1]) ?? 0) + 1);
    }
    return [...left].reduce((p, [k, v]) => p + k * (right.get(k) ?? 0) * v, 0);
  },
  {
    sep: "\n",
    transform: (s) => s.split("   ").map((n) => Number.parseInt(n)),
  },
);
task.expect(11, 31);

export default task;

Last edited 04. April 2025 13:29