Day 03

import Solution from "./solution.ts";

const solve = (length: number) => (arr: number[][]) =>
  arr.reduce((p, c) => p + combine(c, length), 0);

function combine(arr: number[], length: number): number {
  const digits = arr.reduce((p, c, i, a) => {
    for (let x = Math.max(0, length + i - a.length); x < length; x++) {
      if (c > p[x]) {
        return [...p.slice(0, x), c, ...new Array(length - x - 1).fill(0)];
      }
    }
    return p;
  }, new Array(length).fill(0));
  return digits.reduce(
    (p, c, i) => p + c * 10 ** (digits.length - 1 - i),
    0,
  );
}

const task = new Solution(
  solve(2),
  solve(12),
  {
    sep: "\n",
    transform: (s) => s.split("").map((n) => Number.parseInt(n)),
  },
);
task.expect(357, 3121910778619);

export default task;

Last edited 03. December 2025 09:50