Files
advent-of-code-2022/2023/06/solution.ts
2023-12-09 08:38:54 +01:00

58 lines
1.5 KiB
TypeScript

const sample = await Deno.readTextFile("sample.txt");
const input = await Deno.readTextFile("input.txt");
const parseInputData1 = (data: string): [number, number][] => {
const lines = data.trim().split("\n").filter(Boolean);
const [times, distances] = lines
.map((line) =>
line
.split(/:\ +/)[1]
.split(/\ +/)
.map(Number)
);
return times.map((time, i) => [time, distances[i]]);
};
const solvePart1 = (data: string): number => {
const races = parseInputData1(data);
return races
.map(([time, distance]) =>
Array.from(new Array(time), (_, i) => i).map((
t,
) => [distance, t * (time - t)])
.filter(([distance, total]) => total > distance)
).map((winingRaces) => winingRaces.length)
.reduce((s, v) => s * v);
};
console.log("Sample:", solvePart1(sample)); // 286
console.log("Input", solvePart1(input)); // 227850
const parseInputData2 = (data: string): [number, number] => {
const lines = data.trim().split("\n").filter(Boolean);
const [time, distance] = lines
.map((line) =>
Number(line
.split(/:\ +/)[1]
.replace(/\ +/g, ''))
);
return [time, distance]
};
const solvePart2 = (data: string): number => {
const [time, distance] = parseInputData2(data);
let result = 0;
for (let t = 0; t < time ; t += 1) {
const total = t * (time - t)
if (total > distance) result++
}
return result
}
console.log("Sample:", solvePart2(sample)); // 71503
console.log("Input", solvePart2(input)); // 42948149