summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--2018/aoc/__main__.py2
-rw-r--r--2018/aoc/day4.py39
-rw-r--r--2018/inputs/day4.txt1045
3 files changed, 1085 insertions, 1 deletions
diff --git a/2018/aoc/__main__.py b/2018/aoc/__main__.py
index 81eb718..bde6fa0 100644
--- a/2018/aoc/__main__.py
+++ b/2018/aoc/__main__.py
@@ -1,9 +1,9 @@
1import os
1import sys 2import sys
2from importlib import import_module 3from importlib import import_module
3 4
4day = import_module(f'.{sys.argv[1]}', 'aoc') 5day = import_module(f'.{sys.argv[1]}', 'aoc')
5 6
6
7try: 7try:
8 input_file = open(sys.argv[2]).read() 8 input_file = open(sys.argv[2]).read()
9except (OSError, IndexError): 9except (OSError, IndexError):
diff --git a/2018/aoc/day4.py b/2018/aoc/day4.py
new file mode 100644
index 0000000..c0aad81
--- /dev/null
+++ b/2018/aoc/day4.py
@@ -0,0 +1,39 @@
1import re
2from datetime import datetime
3
4timestamp_pattern = re.compile(r'\[(?P<timestamp>.+)\]')
5
6guard_pattern = re.compile(r'#(?P<id>[0-9]+)')
7
8def parse_shifts(shift_list: list) -> iter:
9 shift = None
10 felt_asleep = None
11 for item in shift_list:
12 timestamp = datetime.strptime(
13 timestamp_pattern \
14 .search(item) \
15 .groupdict() \
16 .get('timestamp'),
17 '%Y-%m-%d %H:%M'
18 )
19
20 if item.endswith('shift'):
21 if shift is not None:
22 yield shift
23 shift = {
24 'start': timestamp,
25 'guard': guard_pattern.search(item).groupdict().get('id'),
26 'sleepytime': 0
27 }
28 elif item.endswith('asleep'):
29 felt_asleep = timestamp
30 elif item.endswith('up'):
31 shift['sleepytime'] += int((timestamp - felt_asleep).seconds / 60)
32 felt_asleep = None
33
34
35
36
37def main(input_file: list):
38 for shift in parse_shifts(sorted(input_file)):
39 print(shift)
diff --git a/2018/inputs/day4.txt b/2018/inputs/day4.txt
new file mode 100644
index 0000000..9100b39
--- /dev/null
+++ b/2018/inputs/day4.txt
@@ -0,0 +1,1045 @@
1[1518-10-03 00:47] falls asleep
2[1518-07-26 23:50] Guard #487 begins shift
3[1518-06-22 00:48] wakes up
4[1518-08-21 00:30] falls asleep
5[1518-11-21 00:55] wakes up
6[1518-05-30 00:06] falls asleep
7[1518-04-09 00:44] wakes up
8[1518-07-22 00:58] wakes up
9[1518-06-15 00:57] wakes up
10[1518-09-13 00:31] wakes up
11[1518-11-03 00:48] falls asleep
12[1518-03-09 00:02] Guard #1123 begins shift
13[1518-05-01 00:51] falls asleep
14[1518-06-21 00:19] falls asleep
15[1518-06-18 00:48] wakes up
16[1518-05-24 23:59] Guard #2971 begins shift
17[1518-09-27 00:45] falls asleep
18[1518-06-06 00:44] wakes up
19[1518-05-11 23:58] Guard #641 begins shift
20[1518-04-21 00:01] Guard #1889 begins shift
21[1518-08-30 00:27] falls asleep
22[1518-06-27 00:45] falls asleep
23[1518-06-15 00:00] Guard #1993 begins shift
24[1518-10-04 00:00] Guard #659 begins shift
25[1518-10-31 00:01] Guard #1993 begins shift
26[1518-04-19 00:04] Guard #2917 begins shift
27[1518-05-19 00:59] wakes up
28[1518-09-02 00:27] wakes up
29[1518-08-12 23:58] Guard #2833 begins shift
30[1518-09-28 00:24] wakes up
31[1518-08-10 00:56] wakes up
32[1518-03-07 00:57] wakes up
33[1518-07-31 00:35] falls asleep
34[1518-04-21 00:27] falls asleep
35[1518-06-26 23:51] Guard #1471 begins shift
36[1518-09-01 00:20] falls asleep
37[1518-09-05 00:28] falls asleep
38[1518-06-26 00:55] falls asleep
39[1518-06-11 00:52] wakes up
40[1518-03-15 00:57] wakes up
41[1518-09-18 00:27] falls asleep
42[1518-04-13 00:57] wakes up
43[1518-06-28 00:48] wakes up
44[1518-03-18 00:51] wakes up
45[1518-04-27 00:37] falls asleep
46[1518-04-24 00:35] falls asleep
47[1518-08-10 00:46] wakes up
48[1518-07-14 23:57] Guard #2161 begins shift
49[1518-11-14 00:47] wakes up
50[1518-08-27 00:13] falls asleep
51[1518-11-12 00:45] wakes up
52[1518-03-26 00:23] falls asleep
53[1518-04-21 00:31] wakes up
54[1518-11-09 23:58] Guard #373 begins shift
55[1518-05-05 00:50] wakes up
56[1518-03-15 00:56] falls asleep
57[1518-06-07 00:46] wakes up
58[1518-04-21 00:42] wakes up
59[1518-08-19 00:46] wakes up
60[1518-03-06 00:57] falls asleep
61[1518-06-30 00:38] wakes up
62[1518-08-26 00:37] falls asleep
63[1518-11-17 23:57] Guard #1489 begins shift
64[1518-06-11 00:00] Guard #487 begins shift
65[1518-09-26 00:59] wakes up
66[1518-03-25 00:35] falls asleep
67[1518-04-26 23:58] Guard #941 begins shift
68[1518-08-27 00:38] falls asleep
69[1518-05-18 00:53] wakes up
70[1518-06-20 00:28] wakes up
71[1518-05-05 00:45] falls asleep
72[1518-07-24 00:03] Guard #1811 begins shift
73[1518-04-12 00:30] wakes up
74[1518-08-02 00:48] wakes up
75[1518-07-11 00:31] falls asleep
76[1518-06-20 00:17] falls asleep
77[1518-04-11 00:32] falls asleep
78[1518-03-31 23:57] Guard #349 begins shift
79[1518-11-22 00:59] wakes up
80[1518-10-28 23:57] Guard #659 begins shift
81[1518-11-07 00:34] wakes up
82[1518-10-27 00:35] wakes up
83[1518-07-31 00:20] falls asleep
84[1518-10-11 00:14] falls asleep
85[1518-08-19 00:33] falls asleep
86[1518-03-05 00:04] Guard #2161 begins shift
87[1518-04-21 00:35] falls asleep
88[1518-10-13 00:42] falls asleep
89[1518-08-08 00:44] wakes up
90[1518-09-19 00:47] wakes up
91[1518-07-07 00:01] Guard #2441 begins shift
92[1518-03-24 00:39] wakes up
93[1518-10-20 23:59] Guard #349 begins shift
94[1518-10-07 00:52] falls asleep
95[1518-08-02 00:54] falls asleep
96[1518-09-30 00:22] falls asleep
97[1518-08-26 00:42] wakes up
98[1518-04-26 00:04] falls asleep
99[1518-09-28 00:14] falls asleep
100[1518-10-23 00:34] falls asleep
101[1518-08-16 00:29] falls asleep
102[1518-04-15 00:39] falls asleep
103[1518-08-29 00:37] falls asleep
104[1518-08-14 00:33] falls asleep
105[1518-08-15 00:46] wakes up
106[1518-03-07 00:36] wakes up
107[1518-10-27 00:48] falls asleep
108[1518-05-17 00:06] falls asleep
109[1518-04-13 00:03] falls asleep
110[1518-10-22 00:43] wakes up
111[1518-05-15 00:02] falls asleep
112[1518-09-29 00:36] falls asleep
113[1518-03-17 00:01] Guard #1889 begins shift
114[1518-04-07 00:14] falls asleep
115[1518-05-13 00:58] wakes up
116[1518-11-17 00:49] falls asleep
117[1518-03-28 00:43] falls asleep
118[1518-04-15 00:02] Guard #659 begins shift
119[1518-09-14 00:04] Guard #2179 begins shift
120[1518-08-15 23:58] Guard #2179 begins shift
121[1518-05-02 00:04] Guard #2917 begins shift
122[1518-10-07 00:48] falls asleep
123[1518-07-12 00:49] falls asleep
124[1518-07-07 00:19] falls asleep
125[1518-04-08 00:31] wakes up
126[1518-04-01 00:47] wakes up
127[1518-06-09 00:31] falls asleep
128[1518-10-24 23:57] Guard #2833 begins shift
129[1518-08-25 00:51] falls asleep
130[1518-09-19 23:56] Guard #941 begins shift
131[1518-03-06 23:59] Guard #2833 begins shift
132[1518-04-03 00:13] falls asleep
133[1518-06-04 00:01] Guard #3533 begins shift
134[1518-10-17 00:40] wakes up
135[1518-03-06 00:58] wakes up
136[1518-08-31 00:30] wakes up
137[1518-07-06 00:39] wakes up
138[1518-05-26 00:45] wakes up
139[1518-11-08 23:57] Guard #487 begins shift
140[1518-06-15 00:15] falls asleep
141[1518-09-12 00:28] falls asleep
142[1518-08-01 00:09] falls asleep
143[1518-03-10 00:49] wakes up
144[1518-06-24 00:54] wakes up
145[1518-06-06 00:21] wakes up
146[1518-10-18 00:34] wakes up
147[1518-03-27 00:01] Guard #1489 begins shift
148[1518-05-07 00:51] wakes up
149[1518-10-14 00:46] wakes up
150[1518-05-20 00:27] wakes up
151[1518-03-21 00:03] falls asleep
152[1518-04-17 00:53] falls asleep
153[1518-09-30 00:59] wakes up
154[1518-07-23 00:55] wakes up
155[1518-03-22 23:58] Guard #349 begins shift
156[1518-09-22 00:32] falls asleep
157[1518-05-14 23:54] Guard #1489 begins shift
158[1518-04-03 00:44] falls asleep
159[1518-04-18 00:20] falls asleep
160[1518-09-22 00:59] wakes up
161[1518-05-18 00:35] falls asleep
162[1518-06-18 23:59] Guard #2441 begins shift
163[1518-07-13 00:54] wakes up
164[1518-09-21 00:35] wakes up
165[1518-04-07 00:38] falls asleep
166[1518-11-03 00:59] wakes up
167[1518-05-02 00:21] falls asleep
168[1518-07-02 23:59] Guard #2161 begins shift
169[1518-03-20 00:34] falls asleep
170[1518-04-07 00:32] wakes up
171[1518-03-07 00:33] falls asleep
172[1518-05-13 00:56] falls asleep
173[1518-08-20 00:27] falls asleep
174[1518-06-12 00:33] falls asleep
175[1518-04-27 00:23] wakes up
176[1518-10-05 23:54] Guard #2833 begins shift
177[1518-07-22 00:02] Guard #2161 begins shift
178[1518-03-29 00:49] wakes up
179[1518-11-19 00:04] Guard #2161 begins shift
180[1518-04-29 00:56] wakes up
181[1518-06-18 00:14] falls asleep
182[1518-11-21 00:00] Guard #216