diff options
| author | 2018-12-04 22:41:15 +0100 | |
|---|---|---|
| committer | 2018-12-04 22:41:15 +0100 | |
| commit | 7e820f2d30fa758fea830a13f6d11c384dea7e58 (patch) | |
| tree | b110a2b54d882bce030b4732518bd6f6d7e80edd | |
| parent | 9389bb9fee5c7972e7aad80961ef3a9dc8916c43 (diff) | |
| download | 2018-7e820f2d30fa758fea830a13f6d11c384dea7e58.tar.gz 2018-7e820f2d30fa758fea830a13f6d11c384dea7e58.tar.bz2 2018-7e820f2d30fa758fea830a13f6d11c384dea7e58.zip | |
Day4
| -rw-r--r-- | 2018/aoc/__main__.py | 2 | ||||
| -rw-r--r-- | 2018/aoc/day4.py | 39 | ||||
| -rw-r--r-- | 2018/inputs/day4.txt | 1045 |
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 @@ | |||
| 1 | import os | ||
| 1 | import sys | 2 | import sys |
| 2 | from importlib import import_module | 3 | from importlib import import_module |
| 3 | 4 | ||
| 4 | day = import_module(f'.{sys.argv[1]}', 'aoc') | 5 | day = import_module(f'.{sys.argv[1]}', 'aoc') |
| 5 | 6 | ||
| 6 | |||
| 7 | try: | 7 | try: |
| 8 | input_file = open(sys.argv[2]).read() | 8 | input_file = open(sys.argv[2]).read() |
| 9 | except (OSError, IndexError): | 9 | except (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 @@ | |||
| 1 | import re | ||
| 2 | from datetime import datetime | ||
| 3 | |||
| 4 | timestamp_pattern = re.compile(r'\[(?P<timestamp>.+)\]') | ||
| 5 | |||
| 6 | guard_pattern = re.compile(r'#(?P<id>[0-9]+)') | ||
| 7 | |||
| 8 | def 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 | |||
| 37 | def 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 | ||
