import * as R from "remeda"; import { test, expect } from "vitest"; import fs from "fs-extra"; import path from "path"; import { expectSolution } from "./main.js"; const split = (splitter) => (text) => text.split(splitter); const sum = R.sumBy(R.identity); const input = R.pipe( fs.readFileSync( path.join(path.dirname(import.meta.url), "input").replace("file:", ""), "utf8" ), split("\n\n"), R.map((x) => split("\n")(x) .map((x) => parseInt(x)) .filter(R.isNumber) ), R.map(sum) ); test("part 1", () => { const maxCalories = R.pipe(input, (calories) => Math.max(...calories)); expectSolution(maxCalories).toEqual(71780); }); test("part 2", () => { input.sort((a, b) => (a > b ? -1 : 1)); expectSolution(R.pipe(input, R.take(3), R.sumBy(R.identity))).toEqual(212489); });