This commit is contained in:
Jack Bond-Preston 2018-12-04 15:13:07 +00:00
parent 290f8d2b4d
commit c6c58f12ec
2 changed files with 1058 additions and 0 deletions

1017
aoc-4/inputs.txt Normal file

File diff suppressed because it is too large Load Diff

41
aoc-4/main.py Normal file
View 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] }")