Day 4
This commit is contained in:
parent
290f8d2b4d
commit
c6c58f12ec
1017
aoc-4/inputs.txt
Normal file
1017
aoc-4/inputs.txt
Normal file
File diff suppressed because it is too large
Load Diff
41
aoc-4/main.py
Normal file
41
aoc-4/main.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
inputs = sorted(open("inputs.txt", "r").read().split("\n"))
|
||||||
|
|
||||||
|
guard_id = 0
|
||||||
|
guard_sleep_times = defaultdict(lambda: defaultdict(int))
|
||||||
|
|
||||||
|
fell_asleep = 0
|
||||||
|
|
||||||
|
for item in inputs:
|
||||||
|
split = item.split()
|
||||||
|
|
||||||
|
if split[2] == "Guard":
|
||||||
|
guard_id = int(item.split()[3][1:])
|
||||||
|
elif split[2] == "falls":
|
||||||
|
fell_asleep = int(split[1][3:-1])
|
||||||
|
elif split[2] == "wakes":
|
||||||
|
woke_up = int(split[1][3:-1])
|
||||||
|
|
||||||
|
for i in range(fell_asleep, woke_up):
|
||||||
|
guard_sleep_times[guard_id][i] += 1
|
||||||
|
|
||||||
|
# id, mins slept, most common min
|
||||||
|
max_sleep = (0, 0, 0)
|
||||||
|
|
||||||
|
# id, repeats, min
|
||||||
|
max_repeats = (0, 0, 0)
|
||||||
|
for guard_id, minute_freqs in guard_sleep_times.items():
|
||||||
|
max_freq_minute = max(minute_freqs, key = minute_freqs.get)
|
||||||
|
max_freq = minute_freqs[max_freq_minute]
|
||||||
|
if max_freq > max_repeats[1]:
|
||||||
|
max_repeats = (guard_id, max_freq, max_freq_minute)
|
||||||
|
|
||||||
|
time_slept = sum(minute_freqs.values())
|
||||||
|
if time_slept > max_sleep[1]:
|
||||||
|
max_sleep = (guard_id, time_slept, max_freq_minute)
|
||||||
|
|
||||||
|
|
||||||
|
print(f"[Part 1] Result: { max_sleep[0] * max_sleep[2] }")
|
||||||
|
|
||||||
|
print(f"[Part 2] Result: { max_repeats[0] * max_repeats[2] }")
|
Loading…
Reference in New Issue
Block a user