-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path06.js
53 lines (42 loc) · 1.34 KB
/
06.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import path from 'node:path';
import {fileURLToPath} from 'node:url';
import {matchNumbers, readInput} from '../../../util.js';
const directoryPath = path.dirname(fileURLToPath(import.meta.url));
const input = await readInput(directoryPath);
const lines = input.trim().split('\n');
const races = [];
const [times, distances] = lines.map(line => matchNumbers(line.split(':')[1]));
for (const [index, time] of times.entries()) {
races.push({
time,
distance: distances[index],
});
}
function findPossibleWinWaysForRace(race) {
let possibleWinWays = 0;
for (let milliseconds = 1; milliseconds < race.time; milliseconds++) {
const timeToMove = race.time - milliseconds;
const traveledDistance = timeToMove * milliseconds;
if (traveledDistance > race.distance) {
possibleWinWays++;
}
}
return possibleWinWays;
}
let numberOfDifferentWinWays = 1;
for (const race of races) {
const possibleWinWays = findPossibleWinWaysForRace(race);
numberOfDifferentWinWays *= possibleWinWays;
}
console.log('Number of ways to win:', numberOfDifferentWinWays);
const combinedRace = lines
.map(line => line.split(':')[1].replaceAll(' ', ''))
.map(Number);
const combinedPossibleWinWays = findPossibleWinWaysForRace({
time: combinedRace[0],
distance: combinedRace[1],
});
console.log(
'Different win ways with combined numbers:',
combinedPossibleWinWays,
);