Day 6 done
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
type Race = {
|
||||
time: number;
|
||||
distance: number;
|
||||
};
|
||||
const races: Race[] = [];
|
||||
|
||||
const timeFrom = new Date().getTime();
|
||||
|
||||
// const input = `Time: 47 70 75 66
|
||||
// Distance: 282 1079 1147 1062`.split("\n");
|
||||
|
||||
const input = `Time: 47707566
|
||||
Distance: 282107911471062`.split("\n");
|
||||
|
||||
// parse input
|
||||
const [t, ...rtimes] = input[0].split(" ");
|
||||
const times = rtimes.filter((o) => o !== "").map((o) => Number(o));
|
||||
const [d, ...rdist] = input[1].split(" ");
|
||||
const dist = rdist.filter((o) => o !== "").map((o) => Number(o));
|
||||
|
||||
let mul = 1;
|
||||
|
||||
for (let i = 0; i < times.length; i++) {
|
||||
races.push({ time: times[i], distance: dist[i] });
|
||||
}
|
||||
console.log(races);
|
||||
|
||||
function getDistance(race: Race, holdTime: number): number {
|
||||
return (race.time - holdTime) * holdTime;
|
||||
}
|
||||
|
||||
for (const race of races) {
|
||||
let from = 1;
|
||||
let to = 1;
|
||||
for (let i = 0; i < race.time; i++) {
|
||||
if (getDistance(race, i) > race.distance) {
|
||||
from = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (let i = race.time; i >= 0; i--) {
|
||||
if (getDistance(race, i) > race.distance) {
|
||||
to = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
mul *= to - from + 1;
|
||||
}
|
||||
|
||||
console.log(mul);
|
||||
|
||||
const timeTotal = new Date().getTime() - timeFrom;
|
||||
console.log(`Time took: ${timeTotal}ms`);
|
||||
Reference in New Issue
Block a user