From ee6e32dd3d0e482d12d974649188edfd32fe3a72 Mon Sep 17 00:00:00 2001 From: Simon Cambier Date: Thu, 7 Dec 2023 08:37:58 +0100 Subject: [PATCH] Day 6 part 1 --- day6/day6-ts.ts | 54 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 day6/day6-ts.ts diff --git a/day6/day6-ts.ts b/day6/day6-ts.ts new file mode 100644 index 0000000..a5bca51 --- /dev/null +++ b/day6/day6-ts.ts @@ -0,0 +1,54 @@ +type Race = { + time: number; + distance: number; +}; +const races: Race[] = []; + +const input = `Time: 47 70 75 66 +Distance: 282 1079 1147 1062`.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)); + +for (let i = 0; i < times.length; i++) { + races.push({ time: times[i], distance: dist[i] }); +} +console.log(races); + +function getSpeed(race: Race, holdTime: number): number { + return (race.time - holdTime) * holdTime; +} + +let mul = 1; +const counts: number[] = []; + +for (const race of races) { + let from = 1; + let to = 1; + for (let i = 0; i < race.time; i++) { + if (getSpeed(race, i) > race.distance) { + from = i; + break; + } + } + for (let i = race.time; i >= 0; i--) { + if (getSpeed(race, i) > race.distance) { + to = i; + break; + } + } + counts.push(to - from + 1); + +} +for (const count of counts) { + mul *= count; +} +console.log(mul); + +// console.log(getSpeed(races[0], 2)); +// console.log(getSpeed(races[0], 3)); +// console.log(getSpeed(races[0], 4)); +// console.log(getSpeed(races[0], 5));