Skip to content

Instantly share code, notes, and snippets.

@ninjacarr
Created December 6, 2023 09:11
Show Gist options
  • Save ninjacarr/63d4551f25752fbd6922e8ec74668ad7 to your computer and use it in GitHub Desktop.
Save ninjacarr/63d4551f25752fbd6922e8ec74668ad7 to your computer and use it in GitHub Desktop.
const { u } = require("../../tools/utils");
let input = "./input.txt";
//input = "./input_demo.txt";
const lines = u.readInputLines(input);
const times = lines[0]
.split(" ")
.filter((o) => o.trim() != "" && !isNaN(o.trim()))
.map((o) => Number(o));
const distances = lines[1]
.split(" ")
.filter((o) => o.trim() != "" && !isNaN(o.trim()))
.map((o) => Number(o));
// Part 1
const winCounts = [];
for (i = 0; i <= times.length - 1; i++) {
const winningDistances = [];
for (var ms = 0; ms <= times[i]; ms++) {
const distance = (times[i] - ms) * ms;
if (distance > distances[i]) winningDistances.push(distance);
}
winCounts.push(winningDistances.length);
}
const partOneAnswer = winCounts.reduce((a, c) => (a *= c), 1);
console.log("Part 1:", partOneAnswer);
// Part 2
const time2 = Number(lines[0].split(":")[1].replaceAll(" ", ""));
const dist2 = Number(lines[1].split(":")[1].replaceAll(" ", ""));
console.time("runtime");
const winDist2 = [];
for (var ms = 0; ms <= time2; ms++) {
const distance = (time2 - ms) * ms;
if (distance > dist2) winDist2.push(distance);
}
console.timeEnd("runtime"); // 340 ms
const partTwoAnswer = winDist2.length;
console.log("Part 2:", partTwoAnswer);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment