golfed 2018 day4 solution
This commit is contained in:
parent
297a728e84
commit
681d0ddfa9
|
@ -0,0 +1,26 @@
|
|||
with open('day4-input', 'r') as file:
|
||||
data = sorted([l.strip('\n') for l in file])
|
||||
import numpy as np
|
||||
|
||||
guards = {}
|
||||
guard = None
|
||||
guard_sleep = None
|
||||
|
||||
for line in data:
|
||||
_, time, *event = line.split()
|
||||
minute = int(time[-3:-1])
|
||||
if event[0] == 'Guard':
|
||||
if guard_sleep is not None:
|
||||
raise Exception("Last guard didn't wake up?!")
|
||||
guard = int(event[1][1:])
|
||||
if guard not in guards:
|
||||
guards[guard] = np.zeros((60))
|
||||
elif event[0] == 'wakes':
|
||||
guards[guard][guard_sleep:minute] += 1
|
||||
guard_sleep = None
|
||||
else: # falls asleep
|
||||
guard_sleep = minute
|
||||
|
||||
for func in (np.sum, np.max): # Part 1, Part 2. Pattern shamelessly copied from Peter Tseng's Ruby solution.
|
||||
guard, minutes = max(guards.items(), key=lambda x: func(x[1]))
|
||||
print(guard * minutes.argmax())
|
Loading…
Reference in New Issue