|
|
|
@ -6,7 +6,7 @@ const input = fs
|
|
|
|
|
.split("\n") |
|
|
|
|
.filter((line) => line !== ""); |
|
|
|
|
|
|
|
|
|
const play = (time, record) => { |
|
|
|
|
const calculateWinningStrategies = (time, record) => { |
|
|
|
|
const strategies = []; |
|
|
|
|
for (let i = 0; i < time; i++) { |
|
|
|
|
const speed = i; |
|
|
|
@ -20,6 +20,21 @@ const play = (time, record) => {
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const part1 = (lines) => { |
|
|
|
|
const play = (times, distances) => { |
|
|
|
|
let result = 1; |
|
|
|
|
|
|
|
|
|
for (let i = 0; i < times.length; i++) { |
|
|
|
|
const distance = distances[i]; |
|
|
|
|
const time = times[i]; |
|
|
|
|
|
|
|
|
|
const strategies = calculateWinningStrategies(time, distance); |
|
|
|
|
|
|
|
|
|
result *= strategies.length; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const times = lines[0] |
|
|
|
|
.split(":")[1] |
|
|
|
|
.trim() |
|
|
|
@ -32,18 +47,34 @@ const part1 = (lines) => {
|
|
|
|
|
.split(/ +/) |
|
|
|
|
.map((num) => Number.parseInt(num.trim(), 0)); |
|
|
|
|
|
|
|
|
|
let result = 1; |
|
|
|
|
return play(times, distances); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
for (let i = 0; i < times.length; i++) { |
|
|
|
|
const distance = distances[i]; |
|
|
|
|
const time = times[i]; |
|
|
|
|
const part2 = (lines) => { |
|
|
|
|
const play = (times, distances) => { |
|
|
|
|
let strategies = []; |
|
|
|
|
|
|
|
|
|
const strategies = play(time, distance); |
|
|
|
|
const distance = distances[0]; |
|
|
|
|
const time = times[0]; |
|
|
|
|
|
|
|
|
|
result *= strategies.length; |
|
|
|
|
} |
|
|
|
|
return calculateWinningStrategies(time, distance).length; |
|
|
|
|
}; |
|
|
|
|
const times = lines[0] |
|
|
|
|
.split(":")[1] |
|
|
|
|
.trim() |
|
|
|
|
.replace(/ +/g, "") |
|
|
|
|
.split() |
|
|
|
|
.map((num) => Number.parseInt(num.trim(), 0)); |
|
|
|
|
|
|
|
|
|
const distances = lines[1] |
|
|
|
|
.split(":")[1] |
|
|
|
|
.trim() |
|
|
|
|
.replace(/ +/g, "") |
|
|
|
|
.split() |
|
|
|
|
.map((num) => Number.parseInt(num.trim(), 0)); |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
return play(times, distances); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
console.log(part1(input)); |
|
|
|
|
console.log(part2(input)); |
|
|
|
|