Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit cddfb6e

Browse files
author
calypso
authored
Merge pull request #30 from sqdorte/master
04/1 - python
2 parents 77edc53 + fb5975c commit cddfb6e

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
**/input

2018/04_1/python/sqdorte.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
with open('input', 'r') as raw:
2+
i = sorted(raw.read().strip().split('\n'))
3+
4+
guard = None
5+
sleeping = False
6+
start = None
7+
change = False
8+
9+
guards = {}
10+
11+
for line in i:
12+
minute = int(line[15:17])
13+
14+
if line[19] == 'f':
15+
sleeping = True
16+
start = minute
17+
elif line[19] == 'w':
18+
sleeping = False
19+
change = True
20+
else:
21+
if sleeping:
22+
sleeping = False
23+
change = True
24+
25+
guard = line[26:].split(' ')[0]
26+
27+
if change:
28+
sleeptime = minute - start
29+
try:
30+
guards[guard][0] += sleeptime
31+
except KeyError:
32+
guards[guard] = [sleeptime, {}]
33+
34+
for i in range(start, minute):
35+
try:
36+
guards[guard][1][i] += 1
37+
except KeyError:
38+
guards[guard][1][i] = 1
39+
change = False
40+
41+
guard = sorted(((guards[x][0],x) for x in guards))[-1][1]
42+
sleep = guards[guard][1]
43+
hour = list(zip(*sorted(zip(sleep.values(), sleep.keys()))))[1][-1]
44+
45+
print(int(guard)*hour)

0 commit comments

Comments
 (0)