-
Notifications
You must be signed in to change notification settings - Fork 0
/
six.ts
40 lines (34 loc) · 1015 Bytes
/
six.ts
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
import inputs from "./inputs";
const x = inputs.six;
const [time, dist] = x.split("\n").map((row) =>
row
.split(":")[1]
// .trim() // part A
.replaceAll(" ", "") // part B
.split(" ")
.map((x) => parseInt(x))
.filter((x) => !isNaN(x))
);
const calcDist = (charge: number, dur: number) => {
const speed = charge;
const traveltime = dur - charge;
const dist = traveltime * speed;
// console.log({ dur, charge, traveltime, dist });
return dist;
};
console.log({ time, dist });
const res = time.map((dur, race) => {
const rec = dist[race];
console.log("RACE ", { rec, dur });
let options = Array();
for (let charge = 1; charge < dur; charge++) {
const dist = calcDist(charge, dur);
// console.log({ charge, dist });
options.push(dist);
}
const beat = options.filter((dist) => dist > rec);
console.log({ o: options.length, rec, b: beat.length });
return beat.length;
});
const answer = res.reduce((t, x) => t * x, 1);
console.log({ res, answer });