advent-of-code-2024/entrypoints/deno.ts
2024-12-08 01:12:44 -07:00

34 lines
No EOL
1.1 KiB
TypeScript

import * as path from "@std/path"
// Parse all modules
const parentDir = path.resolve(path.join(import.meta.dirname!, ".."));
const dayFolderRegex = /^day(\d{1,2})$/;
const days: { day: number, part: 1|2, solve: () => Promise<number> }[] = [];
for await (const folder of Deno.readDir(parentDir)) {
const regex = folder.name.match(dayFolderRegex);
if (!regex) {
continue;
}
const dayNum = regex[1];
for (let i = 1; i <= 2; i++) {
if (await Deno.stat(path.join(parentDir, "day" + dayNum, `part${i}.ts`)).then(s => s.isFile).catch(_ => false)) {
const module = await import(path.join(parentDir, "day" + dayNum, `part${i}.ts`));
days.push({
day: +dayNum,
part: i as 1|2,
solve: module.solve
})
}
}
}
// Create deno benchmark entries
for (const { day, part, solve } of days) {
Deno.bench(
`Day ${day} Part ${part}`,
// Group each day and say how much faster p1 is than p2
{ group: `Day ${day}`, baseline: part == 1, permissions: { "read": true } },
() => solve().then(_ => undefined)
)
}