From 37165b60fd2853804ae3803ed93bf3ba2ee7205d Mon Sep 17 00:00:00 2001 From: Pim Kunis Date: Wed, 6 Dec 2023 06:24:30 +0100 Subject: [PATCH] day 6 --- 23/day6/example.txt | 2 ++ 23/day6/input.txt | 2 ++ 23/day6/main.py | 58 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 23/day6/example.txt create mode 100644 23/day6/input.txt create mode 100644 23/day6/main.py diff --git a/23/day6/example.txt b/23/day6/example.txt new file mode 100644 index 0000000..28f5ae9 --- /dev/null +++ b/23/day6/example.txt @@ -0,0 +1,2 @@ +Time: 7 15 30 +Distance: 9 40 200 diff --git a/23/day6/input.txt b/23/day6/input.txt new file mode 100644 index 0000000..377a67c --- /dev/null +++ b/23/day6/input.txt @@ -0,0 +1,2 @@ +Time: 46 68 98 66 +Distance: 358 1054 1807 1080 diff --git a/23/day6/main.py b/23/day6/main.py new file mode 100644 index 0000000..121d09c --- /dev/null +++ b/23/day6/main.py @@ -0,0 +1,58 @@ +import tqdm +import re + +input = "input.txt" + +times = [] +distances = [] + +with open(input, "r") as f: + for line in f: + line = line.strip() + if line.startswith("Time"): + times = map(int, re.split("\\s+", line)[1:]) + else: + distances = map(int, re.split("\\s+", line)[1:]) + +races = [] + +for time, distance in zip(times, distances): + races.append((time, distance)) + +part1 = 1 +for time, record_distance in races: + record_beaten_times = 0 + for time_held in range(time): + time_left = time - time_held + speed = time_held + + distance = speed * time_left + + if distance > record_distance: + record_beaten_times += 1 + part1 *= record_beaten_times + +print("part1", part1) + +time = 0 +record_distance = 0 + +with open(input, "r") as f: + for line in f: + line = line.strip() + if line.startswith("Time"): + time = int("".join(re.split("\\s+", line)[1:])) + else: + record_distance = int("".join(re.split("\\s+", line)[1:])) + +print(time) +part2 = 0 +for time_held in tqdm.tqdm(range(time)): + time_left = time - time_held + speed = time_held + + distance = speed * time_left + + if distance > record_distance: + part2 += 1 +print("part2", part2)