Skip to content

Latest commit

 

History

History
1822 lines (1813 loc) · 136 KB

STATS.md

File metadata and controls

1822 lines (1813 loc) · 136 KB

Solution Statistics

Table of Contents:

All Solutions

Size Runtime Day, Part, Solution
59 bytes ▍ <100 ms ▏ 2015, Day 01, Part 1, Python
92 bytes ▌ <100 ms ▏ 2015, Day 01, Part 2, Python
99 bytes ▌ <100 ms ▏ 2015, Day 02, Part 1, Python
95 bytes ▌ <100 ms ▏ 2015, Day 02, Part 2, Python
109 bytes ▋ <100 ms ▏ 2015, Day 03, Part 1, Python
128 bytes ▋ <100 ms ▏ 2015, Day 03, Part 2, Python
89 bytes ▌ ~150 ms ▎ 2015, Day 04, Part 1, Python
89 bytes ▌ ~3.5 s █▌ 2015, Day 04, Part 2, Python
142 bytes ▊ <100 ms ▏ 2015, Day 05, Part 1, Python
117 bytes ▋ <100 ms ▏ 2015, Day 05, Part 2, Python
226 bytes █▏ ~3.5 s █▌ 2015, Day 06, Part 1, Python
229 bytes █▏ ~5 s █▋ 2015, Day 06, Part 2, Python
419 bytes █▉ <100 ms ▏ 2015, Day 07, Parts 1+2, Python
65 bytes ▍ <100 ms ▏ 2015, Day 08, Part 1, Python
66 bytes ▍ <100 ms ▏ 2015, Day 08, Part 2, Python
186 bytes ▉ ~100 ms ▏ 2015, Day 09, Part 1, Python
186 bytes ▉ ~100 ms ▏ 2015, Day 09, Part 2, Python
121 bytes ▋ ~700 ms ▉ 2015, Day 10, Part 1, Python
133 bytes ▊ ~6 s █▊ 2015, Day 10, Part 2, Python
276 bytes █▍ ~150 ms ▎ 2015, Day 11, Part 1, Python
314 bytes █▌ ~6 s █▊ 2015, Day 11, Part 2, Python
75 bytes ▌ <100 ms ▏ 2015, Day 12, Part 1, Python
186 bytes ▉ <100 ms ▏ 2015, Day 12, Part 2, Python
287 bytes █▍ ~150 ms ▎ 2015, Day 13, Part 1, Python
298 bytes █▍ ~1.5 s █▏ 2015, Day 13, Part 2, Python
122 bytes ▋ <100 ms ▏ 2015, Day 14, Part 1, Python
203 bytes █ <100 ms ▏ 2015, Day 14, Part 2, Python
253 bytes █▎ ~1 s █ 2015, Day 15, Part 1, Python
263 bytes █▎ ~1 s █ 2015, Day 15, Part 2, Python
264 bytes █▎ <100 ms ▏ 2015, Day 16, Part 1, Python
327 bytes █▌ <100 ms ▏ 2015, Day 16, Part 2, Python
112 bytes ▋ ~3 s █▍ 2015, Day 17, Part 1, Python
166 bytes ▉ ~3 s █▍ 2015, Day 17, Part 2, Python
292 bytes █▍ ~1 s █ 2015, Day 18, Part 1, Python
350 bytes █▋ ~1 s █ 2015, Day 18, Part 2, Python
275 bytes █▍ <100 ms ▏ 2015, Day 19, Part 1, Python
240 bytes █▏ <100 ms ▏ 2015, Day 19, Part 2, Python (dumb DFS)
281 bytes █▍ <100 ms ▏ 2015, Day 19, Part 2, Python (greedy DFS)
141 bytes ▊ ~3 s █▍ 2015, Day 20, Part 1, Python
148 bytes ▊ ~4 s █▌ 2015, Day 20, Part 2, Python
335 bytes █▋ <100 ms ▏ 2015, Day 21, Part 1, Python
334 bytes █▋ <100 ms ▏ 2015, Day 21, Part 2, Python
530 bytes ██▍ ~1 s █ 2015, Day 22, Part 1, Python
547 bytes ██▌ ~5 s █▋ 2015, Day 22, Part 2, Python
276 bytes █▍ <100 ms ▏ 2015, Day 23, Part 1, Python
276 bytes █▍ <100 ms ▏ 2015, Day 23, Part 2, Python
232 bytes █▏ ~15 m ███▋ 2015, Day 24, Part 1, Python (brute-force)
238 bytes █▏ <100 ms ▏ 2015, Day 24, Parts 1+2, Python (proper algorithm)
145 bytes ▊ ~3 s █▍ 2015, Day 25, Part 1, Python
142 bytes ▊ <100 ms ▏ 2016, Day 01, Part 1, Python
212 bytes █ <100 ms ▏ 2016, Day 01, Part 2, Python
161 bytes ▉ <100 ms ▏ 2016, Day 02, Part 1, Python
177 bytes ▉ <100 ms ▏ 2016, Day 02, Part 2, Python
84 bytes ▌ <100 ms ▏ 2016, Day 03, Part 1, Python
143 bytes ▊ <100 ms ▏ 2016, Day 03, Part 2, Python
178 bytes ▉ <100 ms ▏ 2016, Day 04, Part 1, Python
151 bytes ▊ <100 ms ▏ 2016, Day 04, Part 2, Python
123 bytes ▋ ~10 s █▉ 2016, Day 05, Part 1, Python
172 bytes ▉ ~40 s ██▍ 2016, Day 05, Part 2, Python
92 bytes ▌ <100 ms ▏ 2016, Day 06, Part 1, Python
92 bytes ▌ <100 ms ▏ 2016, Day 06, Part 2, Python
147 bytes ▊ <100 ms ▏ 2016, Day 07, Part 1, Python
208 bytes █ <100 ms ▏ 2016, Day 07, Part 2, Python
321 bytes █▌ <100 ms ▏ 2016, Day 08, Parts 1+2, Python
155 bytes ▊ <100 ms ▏ 2016, Day 09, Part 1, Python
186 bytes ▉ <100 ms ▏ 2016, Day 09, Part 2, Python
320 bytes █▌ <100 ms ▏ 2016, Day 10, Part 1, Python
336 bytes █▋ <100 ms ▏ 2016, Day 10, Part 2, Python
640 bytes ██▉ ~15 s ██ 2016, Day 11, Part 1, Python (without canonicalization)
701 bytes ███▏ ~6 s █▊ 2016, Day 11, Part 2, Python (with canonicalization)
270 bytes █▎ ~500 ms ▊ 2016, Day 12, Part 1, Python
275 bytes █▍ ~20 s ██▏ 2016, Day 12, Part 2, Python
236 bytes █▏ <100 ms ▏ 2016, Day 13, Part 1, Python
253 bytes █▎ <100 ms ▏ 2016, Day 13, Part 2, Python
198 bytes █ ~2 s █▎ 2016, Day 14, Part 1, Python
271 bytes █▎ ~30 s ██▎ 2016, Day 14, Part 2, Python
124 bytes ▋ <100 ms ▏ 2016, Day 15, Part 1, Python
147 bytes ▊ ~1 s █ 2016, Day 15, Part 2, Python
173 bytes ▉ <100 ms ▏ 2016, Day 16, Part 1, Python
180 bytes ▉ ~10 s █▉ 2016, Day 16, Part 2, Python
326 bytes █▌ ~150 ms ▎ 2016, Day 16, Part 2, C
273 bytes █▎ ~100 ms ▏ 2016, Day 17, Part 1, Python
286 bytes █▍ ~3.5 s █▌ 2016, Day 17, Part 2, Python
146 bytes ▊ <100 ms ▏ 2016, Day 18, Part 1, Python
150 bytes ▊ ~7 s █▊ 2016, Day 18, Part 2, Python
131 bytes ▊ ~1.5 s █▏ 2016, Day 19, Part 1, Python
166 bytes ▉ ~8 s █▊ 2016, Day 19, Part 2, Python
276 bytes █▍ ~100 ms ▏ 2016, Day 19, Part 2, C
127 bytes ▋ <100 ms ▏ 2016, Day 20, Part 1, Python
179 bytes ▉ <100 ms ▏ 2016, Day 20, Part 2, Python
410 bytes █▉ <100 ms ▏ 2016, Day 21, Part 1, Python
417 bytes █▉ <100 ms ▏ 2016, Day 21, Part 2, Python
142 bytes ▊ ~200 ms ▍ 2016, Day 22, Part 1, Python
181 bytes ▉ <100 ms ▏ 2016, Day 22, Part 2, Python
367 bytes █▊ <100 ms ▏ 2016, Day 23, Part 1, Python
100 bytes ▌ <100 ms ▏ 2016, Day 23, Part 2, Python
419 bytes █▉ <100 ms ▏ 2016, Day 24, Part 1, Python
425 bytes ██ <100 ms ▏ 2016, Day 24, Part 2, Python
114 bytes ▋ <100 ms ▏ 2016, Day 25, Part 1, Python
93 bytes ▌ <100ms ▏ 2017, Day 01, Part 1, Python
100 bytes ▌ <100ms ▏ 2017, Day 01, Part 2, Python
87 bytes ▌ <100 ms ▏ 2017, Day 02, Part 1, Python
151 bytes ▊ <100 ms ▏ 2017, Day 02, Part 2, Python
68 bytes ▍ <100 ms ▏ 2017, Day 03, Part 1, Python
202 bytes █ <100 ms ▏ 2017, Day 03, Part 2, Python
115 bytes ▋ <100 ms ▏ 2017, Day 04, Part 1, Python
132 bytes ▊ <100 ms ▏ 2017, Day 04, Part 2, Python
102 bytes ▋ ~100 ms ▏ 2017, Day 05, Part 1, Python
112 bytes ▋ ~10 s █▉ 2017, Day 05, Part 2, Python
199 bytes █ <100 ms ▏ 2017, Day 06, Part 1, Python
235 bytes █▏ <100 ms ▏ 2017, Day 06, Part 2, Python
128 bytes ▋ <100 ms ▏ 2017, Day 07, Part 1, Python
383 bytes █▊ <100 ms ▏ 2017, Day 07, Part 2, Python
291 bytes █▍ <100 ms ▏ 2017, Day 08, Part 1, Python
303 bytes █▍ <100 ms ▏ 2017, Day 08, Part 2, Python
143 bytes ▊ <100 ms ▏ 2017, Day 09, Part 1, Python
109 bytes ▋ <100 ms ▏ 2017, Day 09, Part 2, Python
170 bytes ▉ <100 ms ▏ 2017, Day 10, Part 1, Python
253 bytes █▎ <100 ms ▏ 2017, Day 10, Part 2, Python
167 bytes ▉ <100 ms ▏ 2017, Day 11, Part 1, Python
194 bytes █ <100 ms ▏ 2017, Day 11, Part 2, Python
159 bytes ▊ <100 ms ▏ 2017, Day 12, Part 1, Python
197 bytes █ <100 ms ▏ 2017, Day 12, Part 2, Python
149 bytes ▊ <100 ms ▏ 2017, Day 13, Part 1, Python
167 bytes ▉ ~5 s █▋ 2017, Day 13, Part 2, Python
341 bytes █▋ ~500 ms ▊ 2017, Day 14, Part 1, Python
586 bytes ██▋ ~500 ms ▊ 2017, Day 14, Part 2, Python
154 bytes ▊ ~10 s █▉ 2017, Day 15, Part 1, Python
195 bytes █ ~8 s █▊ 2017, Day 15, Part 2, Python
234 bytes █▏ ~100 ms ▏ 2017, Day 16, Part 1, Python
309 bytes █▌ ~750 ms ▉ 2017, Day 16, Part 2, Python
80 bytes ▌ <100 ms ▏ 2017, Day 17, Part 1, Python (full simulation with arrays)
136 bytes ▊ ~10 h █████ 2017, Day 17, Part 2, Python (full simulation with circular list) (estimated)
299 bytes █▍ ~8 m ███▍ 2017, Day 17, Part 2, C (full simulation with circular list)
90 bytes ▌ ~12 s ██ 2017, Day 17, Part 2, Python (tracking)
355 bytes █▋ <100 ms ▏ 2017, Day 18, Part 1, Python
548 bytes ██▌ ~200 ms ▍ 2017, Day 18, Part 2, Python
262 bytes █▎ <100 ms ▏ 2017, Day 19, Part 1, Python
242 bytes █▏ <100 ms ▏ 2017, Day 19, Part 2, Python
279 bytes █▍ <100 ms ▏ 2017, Day 19, Parts 1+2, Python
210 bytes █ ~350 ms ▋ 2017, Day 20, Part 1, Python
290 bytes █▍ ~350 ms ▋ 2017, Day 20, Part 2, Python
452 bytes ██▏ ~3 s █▍ 2017, Day 21, Parts 1+2, Python
220 bytes █▏ <100 ms ▏ 2017, Day 22, Part 1, Python
229 bytes █▏ ~5 s █▋ 2017, Day 22, Part 2, Python
321 bytes █▌ <100 ms ▏ 2017, Day 23, Part 1, Python
149 bytes ▊ ~750 ms ▉ 2017, Day 23, Part 2, Python
210 bytes █ ~5 s █▋ 2017, Day 24, Part 1, Python
259 bytes █▎ ~5 s █▋ 2017, Day 24, Part 2, Python
292 bytes █▍ ~5 s █▋ 2017, Day 25, Part 1, Python
38 bytes ▎ <100 ms ▏ 2018, Day 01, Part 1, Python
118 bytes ▋ <100 ms ▏ 2018, Day 01, Part 2, Python
129 bytes ▋ <100 ms ▏ 2018, Day 02, Part 1, Python
135 bytes ▊ <100 ms ▏ 2018, Day 02, Part 2, Python
197 bytes █ ~350 ms ▋ 2018, Day 03, Part 1, Python
291 bytes █▍ ~1 s █ 2018, Day 03, Part 2, Python
359 bytes █▋ <100 ms ▏ 2018, Day 04, Part 1, Python
359 bytes █▋ <100 ms ▏ 2018, Day 04, Part 2, Python
181 bytes ▉ ~4 s █▌ 2018, Day 05, Part 1, Python (multi-pass)
260 bytes █▎ ~2 s █▎ 2018, Day 05, Part 2, Python (single-pass)
357 bytes █▋ ~2 s █▎ 2018, Day 06, Part 1, Python
255 bytes █▎ ~750 ms ▉ 2018, Day 06, Part 2, Python
246 bytes █▎ <100 ms ▏ 2018, Day 07, Part 1, Python
408 bytes █▉ <100 ms ▏ 2018, Day 07, Part 2, Python
163 bytes ▉ <100 ms ▏ 2018, Day 08, Part 1, Python
232 bytes █▏ <100 ms ▏ 2018, Day 08, Part 2, Python
204 bytes █ ~500 ms ▊ 2018, Day 09, Part 1, Python (array)
276 bytes █▍ ~30 s ██▎ 2018, Day 09, Part 2, Python (CDLL)
427 bytes ██ ~200 ms ▍ 2018, Day 09, Part 2, C (CDLL) (including compilation)
365 bytes █▊ <100 ms ▏ 2018, Day 10, Parts 1+2, Python
201 bytes █ ~150 ms ▎ 2018, Day 11, Part 1, Python
260 bytes █▎ ~10 m ███▌ 2018, Day 11, Part 2, Python (naive)
305 bytes █▌ ~25 s ██▎ 2018, Day 11, Part 2, Python (pre-summed matrix)
361 bytes █▋ ~6 s █▊ 2018, Day 11, Part 2, Python (optimized pre-summed matrix)
303 bytes █▍ ~3.5 s █▌ 2018, Day 11, Part 2, Python (SAT)
442 bytes ██ ~150 ms ▎ 2018, Day 11, Part 2, C (optimized pre-summed matrix)
381 bytes █▊ ~150 ms ▎ 2018, Day 11, Part 2, C (SAT)
289 bytes █▍ <100 ms ▏ 2018, Day 12, Part 1, Python
342 bytes █▋ <100 ms ▏ 2018, Day 12, Part 2, Python
480 bytes ██▎ <100 ms ▏ 2018, Day 13, Part 1, Python
569 bytes ██▋ ~150 ms ▎ 2018, Day 13, Part 2, Python
158 bytes ▊ ~400 ms ▋ 2018, Day 14, Part 1, Python
177 bytes ▉ ~20 s ██▏ 2018, Day 14, Part 2, Python
314 bytes █▌ ~500 ms ▊ 2018, Day 14, Part 2, C
1071 bytes ████▊ ~20 s ██▏ 2018, Day 15, Parts 1+2, Python
631 bytes ██▉ <100 ms ▏ 2018, Day 16, Part 1, Python
812 bytes ███▋ <100 ms ▏ 2018, Day 16, Part 2, Python
725 bytes ███▎ ~2 s █▎ 2018, Day 17, Parts 1+2, Python
457 bytes ██▏ <100 ms ▏ 2018, Day 18, Part 1, Python
562 bytes ██▌ ~3 s █▍ 2018, Day 18, Part 2, Python
661 bytes ███ ~3 s █▍ 2018, Day 19, Part 1, Python (plain simulation)
704 bytes ███▏ ~1 s █ 2018, Day 19, Part 2, Python (host computation)
368 bytes █▊ ~350 ms ▋ 2018, Day 20, Parts 1+2, Python (shortcut)
423 bytes ██ ~350 ms ▋ 2018, Day 20, Parts 1+2, Python (correct)
247 bytes █▎ ~100 ms ▏ 2018, Day 20, Parts 1+2, Python (new)
130 bytes ▋ <100 ms ▏ 2018, Day 21, Part 1, Python (host computation)
195 bytes █ <100 ms ▏ 2018, Day 21, Part 2, Python (host computation)
279 bytes █▍ <100 ms ▏ 2018, Day 22, Part 1, Python
614 bytes ██▊ ~10 s █▉ 2018, Day 22, Part 2, Python (simple)
601 bytes ██▊ ~4 s █▌ 2018, Day 22, Part 2, Python (optimized)
150 bytes ▊ <100 ms ▏ 2018, Day 23, Part 1, Python
356 bytes █▋ ~500 ms ▊ 2018, Day 23, Part 2, Python
839 bytes ███▊ ~5 s █▋ 2018, Day 24, Parts 1+2, Python
271 bytes █▎ ~7 s █▊ 2018, Day 25, Part 1, Python
48 bytes ▍ <100 ms ▏ 2019, Day 01, Part 1, Python
80 bytes ▌ <100 ms ▏ 2019, Day 01, Part 2, Python
149 bytes ▊ <100 ms ▏ 2019, Day 02, Part 1, Python
197 bytes █ ~600 ms ▊ 2019, Day 02, Part 2, Python
210 bytes █ ~150 ms ▎ 2019, Day 03, Part 1, Python
214 bytes █ ~150 ms ▎ 2019, Day 03, Part 2, Python
121 bytes ▋ ~1 s █ 2019, Day 04, Part 1, Python
122 bytes ▋ ~1 s █ 2019, Day 04, Part 2, Python
271 bytes █▎ <100 ms ▏ 2019, Day 05, Part 1, Python
342 bytes █▋ <100 ms ▏ 2019, Day 05, Part 2, Python
113 bytes ▋ <100 ms ▏ 2019, Day 06, Part 1, Python
165 bytes ▉ <100 ms ▏ 2019, Day 06, Part 2, Python
462 bytes ██▏ ~150 ms ▎ 2019, Day 07, Part 1, Python
603 bytes ██▊ ~150 ms ▎ 2019, Day 07, Part 2, Python
166 bytes ▉ <100 ms ▏ 2019, Day 08, Part 1, Python
200 bytes █ <100 ms ▏ 2019, Day 08, Part 2, Python
418 bytes █▉ <100 ms ▏ 2019, Day 09, Part 1, Python
418 bytes █▉ ~2.5 s █▍ 2019, Day 09, Part 2, Python
371 bytes █▊ ~1.5 s █▏ 2019, Day 10, Part 1, Python
575 bytes ██▋ ~7.5 s █▊ 2019, Day 10, Part 2, Python
701 bytes ███▏ ~30 s ██▎ 2019, Day 10, Part 2, Python (with visualization)
499 bytes ██▎ ~500 ms ▊ 2019, Day 11, Part 1, Python
561 bytes ██▌ ~100 ms ▏ 2019, Day 11, Part 2, Python
345 bytes █▋ <100 ms ▏ 2019, Day 12, Part 1, Python
473 bytes ██▏ ~5 s █▋ 2019, Day 12, Part 2, Python (derived from part 1 solution)
368 bytes █▊ ~6 s █▊ 2019, Day 12, Part 2, Python (full axis separation)
432 bytes ██ ~100 ms ▏ 2019, Day 13, Part 1, Python
517 bytes ██▍ ~3 s █▍ 2019, Day 13, Part 2, Python
314 bytes █▌ <100 ms ▏ 2019, Day 14, Part 1, Python
377 bytes █▊ <100 ms ▏ 2019, Day 14, Part 2, Python
665 bytes ███ ~300 ms ▌ 2019, Day 15, Part 1, Python
773 bytes ███▌ ~300 ms ▌ 2019, Day 15, Part 2, Python
214 bytes █ ~5 s █▋ 2019, Day 16, Part 1, Python (computing and "caching" the transform matrix first)
185 bytes ▉ ~10 s █▉ 2019, Day 16, Part 1, Python (computing the transform matrix on-the-fly)
179 bytes ▉ ~10 s █▉ 2019, Day 16, Part 2, Python
546 bytes ██▌ ~250 ms ▌ 2019, Day 17, Part 1, Python
1128 bytes █████ ~500 ms ▊ 2019, Day 17, Part 2, Python
666 bytes ███ ~300 ms ▌ 2019, Day 18, Part 1, Python
842 bytes ███▊ ~700 ms ▉ 2019, Day 18, Part 2, Python
494 bytes ██▎ ~3.5 s █▌ 2019, Day 19, Part 1, Python (brute force)
561 bytes ██▌ ~350 ms ▋ 2019, Day 19, Part 2, Python (fast search with slope estimation)
519 bytes ██▍ ~5 s █▋ 2019, Day 19, Part 2, Python (edge walking)
432 bytes ██ <100 ms ▏ 2019, Day 20, Part 1, Python
667 bytes ███ ~600 ms ▊ 2019, Day 20, Part 2, Python
488 bytes ██▎ ~150 ms ▎ 2019, Day 21, Part 1, Python
540 bytes ██▌ ~3.5 s █▌ 2019, Day 21, Part 2, Python
208 bytes █ ~100 ms ▏ 2019, Day 22, Part 1, Python (full deck simulation)
146 bytes ▊ <100 ms ▏ 2019, Day 22, Part 1, Python (single card tracing)
387 bytes █▊ <100 ms ▏ 2019, Day 22, Part 2, Python (reverse construction)
337 bytes █▋ <100 ms ▏ 2019, Day 22, Part 2, Python (forward construction)
690 bytes ███▏ ~150 ms ▎ 2019, Day 23, Part 1, Python (machines as classes)
668 bytes ███ ~150 ms ▎ 2019, Day 23, Part 1, Python (machines as dictionaries)
738 bytes ███▍ ~1 s █ 2019, Day 23, Part 2, Python
269 bytes █▎ <100 ms ▏ 2019, Day 24, Part 1, Python
551 bytes ██▌ ~600 ms ▊ 2019, Day 24, Part 2, Python
1106 bytes ████▉ ~6 s █▊ 2019, Day 25, Part 1, Python
79 bytes ▌ <100 ms ▏ 2020, Day 01, Part 1, Python
98 bytes ▌ ~600 ms ▊ 2020, Day 01, Part 2, Python
137 bytes ▊ <100 ms ▏ 2020, Day 02, Part 1, Python
144 bytes ▊ <100 ms ▏ 2020, Day 02, Part 2, Python
100 bytes ▌ <100 ms ▏ 2020, Day 03, Part 1, Python
158 bytes ▊ <100 ms ▏ 2020, Day 03, Part 2, Python
160 bytes ▉ <100 ms ▏ 2020, Day 04, Part 1, Python
446 bytes ██ <100 ms ▏ 2020, Day 04, Part 2, Python
99 bytes ▌ <100 ms ▏ 2020, Day 05, Part 1, Python
142 bytes ▊ <100 ms ▏ 2020, Day 05, Part 2, Python
77 bytes ▌ <100 ms ▏ 2020, Day 06, Part 1, Python
133 bytes ▊ <100 ms ▏ 2020, Day 06, Part 2, Python
202 bytes █ <100 ms ▏ 2020, Day 07, Part 1, Python
212 bytes █ <100 ms ▏ 2020, Day 07, Part 2, Python
157 bytes ▊ <100 ms ▏ 2020, Day 08, Part 1, Python
258 bytes █▎ <100 ms ▏ 2020, Day 08, Part 2, Python
144 bytes ▊ ~150 ms ▎ 2020, Day 09, Part 1, Python
227 bytes █▏ ~250 ms ▌ 2020, Day 09, Part 2, Python
104 bytes ▋ <100 ms ▏ 2020, Day 10, Part 1, Python
137 bytes ▊ <100 ms ▏ 2020, Day 10, Part 2, Python
347 bytes █▋ ~1.5 s █▏ 2020, Day 11, Part 1, Python (with 2D arrays)
269 bytes █▎ ~2.5 s █▍ 2020, Day 11, Part 1, Python (with dictionaries)
373 bytes █▊ ~3 s █▍ 2020, Day 11, Part 2, Python
177 bytes ▉ <100 ms ▏ 2020, Day 12, Part 1, Python
191 bytes █ <100 ms ▏ 2020, Day 12, Part 2, Python
118 bytes ▋ <100 ms ▏ 2020, Day 13, Part 1, Python
137 bytes ▊ <100 ms ▏ 2020, Day 13, Part 2, Python
179 bytes ▉ <100 ms ▏ 2020, Day 14, Part 1, Python
292 bytes █▍ ~150 ms ▎ 2020, Day 14, Part 2, Python
112 bytes ▋ <100 ms ▏ 2020, Day 15, Part 1, Python
116 bytes ▋ ~15 s ██ 2020, Day 15, Part 2, Python
223 bytes █▏ ~1.5 s █▏ 2020, Day 15, Part 2, C
204 bytes █ <100 ms ▏ 2020, Day 16, Part 1, Python
528 bytes ██▍ <100 ms ▏ 2020, Day 16, Part 2, Python
328 bytes █▌ <100 ms ▏ 2020, Day 17, Part 1, Python
357 bytes █▋ ~1.5 s █▏ 2020, Day 17, Part 2, Python
263 bytes █▎ <100 ms ▏ 2020, Day 18, Part 1, Python
392 bytes █▉ <100 ms ▏ 2020, Day 18, Part 2, Python (manual parsing)
236 bytes █▏ <100 ms ▏ 2020, Day 18, Part 2, Python (eval hack)
431 bytes ██ <100 ms ▏ 2020, Day 19, Part 1, Python
504 bytes ██▎ ~300 ms ▌ 2020, Day 19, Part 2, Python
347 bytes █▋ <100 ms ▏ 2020, Day 20, Part 1, Python
879 bytes ███▉ ~150 ms ▎ 2020, Day 20, Part 2, Python
341 bytes █▋ <100 ms ▏ 2020, Day 21, Parts 1+2, Python
217 bytes █▏ <100 ms ▏ 2020, Day 22, Part 1, Python
358 bytes █▋ ~2.5 s █▍ 2020, Day 22, Part 2, Python
197 bytes █ <100 ms ▏ 2020, Day 23, Part 1, Python
244 bytes █▏ ~15 s ██ 2020, Day 23, Part 2, Python
387 bytes █▊ ~600 ms ▊ 2020, Day 23, Part 2, C
186 bytes ▉ <100 ms ▏ 2020, Day 24, Part 1, Python
402 bytes █▉ ~2 s █▎ 2020, Day 24, Part 2, Python
116 bytes ▋ ~5 s █▋ 2020, Day 25, Part 1, Python
68 bytes ▍ <100 ms ▏ 2021, Day 01, Part 1, Python
92 bytes ▌ <100 ms ▏ 2021, Day 01, Part 2, Python
106 bytes ▋ <100 ms ▏ 2021, Day 02, Part 1, Python (using complex numbers)
105 bytes ▋ <100 ms ▏ 2021, Day 02, Part 1, Python (using separate components)
114 bytes ▋ <100 ms ▏ 2021, Day 02, Part 2, Python
120 bytes ▋ <100 ms ▏ 2021, Day 03, Part 1, Python
181 bytes ▉ <100 ms ▏ 2021, Day 03, Part 2, Python
342 bytes █▋ <100 ms ▏ 2021, Day 04, Part 1, Python
352 bytes █▋ <100 ms ▏ 2021, Day 04, Part 2, Python
295 bytes █▍ <100 ms ▏ 2021, Day 05, Part 1, Python (coordinate list)
275 bytes █▍ ~150 ms ▎ 2021, Day 05, Part 1, Python (using part 2 approach)
253 bytes █▎ ~250 ms ▌ 2021, Day 05, Part 2, Python
137 bytes ▊ <100 ms ▏ 2021, Day 06, Part 1, Python
138 bytes ▊ <100 ms ▏ 2021, Day 06, Part 2, Python
104 bytes ▋ ~150 ms ▎ 2021, Day 07, Part 1, Python
128 bytes ▋ ~400 ms ▋ 2021, Day 07, Part 2, Python
118 bytes ▋ <100 ms ▏ 2021, Day 08, Part 1, Python
455 bytes ██▏ <100 ms ▏ 2021, Day 08, Part 2, Python
185 bytes ▉ <100 ms ▏ 2021, Day 09, Part 1, Python
328 bytes █▌ <100 ms ▏ 2021, Day 09, Part 2, Python (using low point seeds)
311 bytes █▌ ~100 ms ▏ 2021, Day 09, Part 2, Python (using arbitrary seeds)
208 bytes █ <100 ms ▏ 2021, Day 10, Part 1, Python
251 bytes █▎ <100 ms ▏ 2021, Day 10, Part 2, Python
321 bytes █▌ <100 ms ▏ 2021, Day 11, Part 1, Python
321 bytes █▌ <100 ms ▏ 2021, Day 11, Part 2, Python
220 bytes █▏ <100 ms ▏ 2021, Day 12, Part 1, Python
258 bytes █▎ ~1 s █ 2021, Day 12, Part 2, Python
237 bytes █▏ <100 ms ▏ 2021, Day 13, Part 1, Python
286 bytes █▍ <100 ms ▏ 2021, Day 13, Part 2, Python
233 bytes █▏ <100 ms ▏ 2021, Day 14, Part 1, Python
375 bytes █▊ <100 ms ▏ 2021, Day 14, Part 2, Python
199 bytes █ <100 ms ▏ 2021, Day 15, Part 1, Python
376 bytes █▊ ~7 s █▊ 2021, Day 15, Part 2, Python (BFS)
422 bytes ██ ~1 s █ 2021, Day 15, Part 2, Python (Dijkstra)
297 bytes █▍ <100 ms ▏ 2021, Day 16, Part 1, Python
438 bytes ██ <100 ms ▏ 2021, Day 16, Part 2, Python
232 bytes █▏ ~500 ms ▊ 2021, Day 17, Part 1, Python
216 bytes █ ~1 s █ 2021, Day 17, Part 2, Python
560 bytes ██▌ ~350 ms ▋ 2021, Day 18, Part 1, Python
622 bytes ██▉ ~4 s █▌ 2021, Day 18, Part 2, Python
532 bytes ██▍ ~30 s ██▎ 2021, Day 19, Part 1, Python
610 bytes ██▊ ~30 s ██▎ 2021, Day 19, Part 2, Python
365 bytes █▊ <100 ms ▏ 2021, Day 20, Part 1, Python
375 bytes █▊ ~10 s █▉ 2021, Day 20, Part 2, Python
194 bytes █ <100 ms ▏ 2021, Day 21, Part 1, Python
346 bytes █▋ ~250 ms ▌ 2021, Day 21, Part 2, Python
254 bytes █▎ ~2 s █▎ 2021, Day 22, Part 1, Python
425 bytes ██ ~40 m ████ 2021, Day 22, Part 2, Python (naive approach with coordinate compression)
402 bytes █▉ ~15 s ██ 2021, Day 22, Part 2, Python (cube-splitting approach)
982 bytes ████▍ ~2.5 s █▍ 2021, Day 23, Part 1, Python
1000 bytes ████▌ ~2.5 s █▍ 2021, Day 23, Part 2, Python
281 bytes █▍ ~10 s █▉ 2021, Day 24, Part 1, Python
278 bytes █▍ ~1 s █ 2021, Day 24, Part 2, Python
337 bytes █▋ ~20 m ███▊ 2021, Day 25, Part 1, Python (sets)
361 bytes █▋ ~3 s █▍ 2021, Day 25, Part 1, Python (2D array)
181 bytes ▉ ~350 ms ▋ 2021, Day 25, Part 1, Python (strings)
82 bytes ▌ <100 ms ▏ 2022, Day 01, Part 1, Python
95 bytes ▌ <100 ms ▏ 2022, Day 01, Part 2, Python
256 bytes █▎ ~2 s █▎ 2022, Day 01, Parts 1+2, x86 DOS Assembly (assembled)
101 bytes ▌ <100 ms ▏ 2022, Day 02, Part 1, Python
91 bytes ▌ <100 ms ▏ 2022, Day 02, Part 2, Python
122 bytes ▋ <100 ms ▏ 2022, Day 03, Part 1, Python
128 bytes ▋ <100 ms ▏ 2022, Day 03, Part 2, Python
118 bytes ▋ <100 ms ▏ 2022, Day 04, Part 1, Python
103 bytes ▋ <100 ms ▏ 2022, Day 04, Part 2, Python
282 bytes █▍ <100 ms ▏ 2022, Day 05, Part 1, Python
276 bytes █▍ <100 ms ▏ 2022, Day 05, Part 2, Python
86 bytes ▌ <100 ms ▏ 2022, Day 06, Part 1, Python
88 bytes ▌ <100 ms ▏ 2022, Day 06, Part 2, Python
261 bytes █▎ <100 ms ▏ 2022, Day 07, Parts 1+2, Python
220 bytes █▏ <100 ms ▏ 2022, Day 08, Part 1, Python
224 bytes █▏ <100 ms ▏ 2022, Day 08, Part 2, Python
235 bytes █▏ <100 ms ▏ 2022, Day 09, Part 1, Python (coordinate tuples)
296 bytes █▍ <100 ms ▏ 2022, Day 09, Part 2, Python (coordinate tuples)
234 bytes █▏ <100 ms ▏ 2022, Day 09, Part 1, Python (complex numbers)
279 bytes █▍ ~150 ms ▎ 2022, Day 09, Part 2, Python (complex numbers)
127 bytes ▋ <100 ms ▏ 2022, Day 10, Part 1, Python
164 bytes ▉ <100 ms ▏ 2022, Day 10, Part 2, Python
325 bytes █▌ <100 ms ▏ 2022, Day 11, Part 1, Python
343 bytes █▋ ~3.5 s █▌ 2022, Day 11, Part 2, Python
312 bytes █▌ <100 ms ▏ 2022, Day 12, Parts 1+2, Python
276 bytes █▍ <100 ms ▏ 2022, Day 13, Part 1, Python
264 bytes █▎ <100 ms ▏ 2022, Day 13, Part 2, Python (with proper parsing and comparison)
165 bytes ▉ <100 ms ▏ 2022, Day 13, Part 2, Python (shortcut, list-based)
137 bytes ▊ <100 ms ▏ 2022, Day 13, Part 2, Python (shortcut, string-based)
332 bytes █▌ <100 ms ▏ 2022, Day 14, Part 1, Python (complex numbers)
351 bytes █▋ ~2 s █▎ 2022, Day 14, Part 2, Python (complex numbers)
334 bytes █▋ <100 ms ▏ 2022, Day 14, Part 1, Python (coordinate tuples)
357 bytes █▋ ~1.5 s █▏ 2022, Day 14, Part 2, Python (coordinate tuples)
314 bytes █▌ <100 ms ▏ 2022, Day 14, Part 2, Python (sweep approach)
200 bytes █ ~1 s █ 2022, Day 15, Part 1, Python (set of coordinates)
379 bytes █▊ ~3 m ███ 2022, Day 15, Part 2, Python (coordinate ranges)
340 bytes █▋ ~1.5 s █▏ 2022, Day 15, Part 2, Python (heuristics and boundary intersection)
340 bytes █▋ ~2.5 s █▍ 2022, Day 16, Part 1, Python (DFS only)
395 bytes █▉ ~1.5 m ██▊ 2022, Day 16, Part 2, Python (DFS only)
507 bytes ██▍ ~20 s ██▏ 2022, Day 16, Part 2, Python (BFS+DFS)
366 bytes █▊ <100 ms ▏ 2022, Day 17, Part 1, Python
468 bytes ██▏ ~350 ms ▋ 2022, Day 17, Part 2, Python
153 bytes ▊ <100 ms ▏ 2022, Day 18, Part 1, Python
262 bytes █▎ ~150 ms ▎ 2022, Day 18, Part 2, Python
510 bytes ██▍ ~7 s █▊ 2022, Day 19, Part 1, Python
511 bytes ██▍ ~30 s ██▎ 2022, Day 19, Part 2, Python
223 bytes █▏ ~2 s █▎ 2022, Day 20, Part 1, Python (nested loop)
266 bytes █▎ ~20 s ██▏ 2022, Day 20, Part 2, Python (nested loop)
241 bytes █▏ ~150 ms ▎ 2022, Day 20, Part 1, Python (linked list)
277 bytes █▍ ~2 s █▎ 2022, Day 20, Part 2, Python (linked list)
170 bytes ▉ <100 ms ▏ 2022, Day 20, Part 1, Python (order table)
189 bytes █ ~1.5 s █▏ 2022, Day 20, Part 2, Python (order table)
220 bytes █▏ ~1.5 s █▏ 2022, Day 20, Parts 1+2, Python (order table)
614 bytes ██▊ ~600 ms ▊ 2022, Day 20, Parts 1+2, C (linked list)
519 bytes ██▍ ~200 ms ▍ 2022, Day 20, Parts 1+2, C (order table)
250 bytes █▎ <100 ms ▏ 2022, Day 21, Part 1, Python
472 bytes ██▏ <100 ms ▏ 2022, Day 21, Part 2, Python (equation inversion)
492 bytes ██▎ <100 ms ▏ 2022, Day 21, Parts 1+2, Python (equation inversion)
318 bytes █▌ <100 ms ▏ 2022, Day 21, Part 2, Python (linear solver)
330 bytes █▌ <100 ms ▏ 2022, Day 21, Parts 1+2, Python (linear solver)
106 bytes ▋ ~500 ms ▊ 2022, Day 21, Part 1, Python (evil exec hackery)
356 bytes █▋ <100 ms ▏ 2022, Day 22, Part 1, Python
649 bytes ██▉ ~150 ms ▎ 2022, Day 22, Part 2, Python (automatic portals)
557 bytes ██▌ <100 ms ▏ 2022, Day 22, Part 2, Python (hard-coded portals)
424 bytes ██ ~150 ms ▎ 2022, Day 23, Part 1, Python
333 bytes █▋ ~15 s ██ 2022, Day 23, Part 2, Python
441 bytes ██ ~15 s ██ 2022, Day 23, Parts 1+2, Python
395 bytes █▉ ~500 ms ▊ 2022, Day 24, Part 1, Python
449 bytes ██▏ ~1.5 s █▏ 2022, Day 24, Part 2, Python
466 bytes ██▏ ~1.5 s █▏ 2022, Day 24, Parts 1+2, Python
169 bytes ▉ <100 ms ▏ 2022, Day 25, Part 1, Python (with conversions)
199 bytes █ <100 ms ▏ 2022, Day 25, Part 1, Python (direct addition)
88 bytes ▌ <100 ms ▏ 2023, Day 01, Part 1, Python
246 bytes █▎ <100 ms ▏ 2023, Day 01, Part 2, Python
179 bytes ▉ <100 ms ▏ 2023, Day 02, Part 1, Python
184 bytes ▉ <100 ms ▏ 2023, Day 02, Part 2, Python
294 bytes █▍ <100 ms ▏ 2023, Day 03, Part 1, Python (complex number dictionary)
332 bytes █▌ <100 ms ▏ 2023, Day 03, Part 2, Python (complex number dictionary)
355 bytes █▋ ~800 ms ▉ 2023, Day 03, Part 1, Python (list of spans)
399 bytes █▉ ~400 ms ▋ 2023, Day 03, Part 2, Python (list of spans)
114 bytes ▋ <100 ms ▏ 2023, Day 04, Part 1, Python
175 bytes ▉ <100 ms ▏ 2023, Day 04, Part 2, Python
230 bytes █▏ <100 ms ▏ 2023, Day 05, Part 1, Python
423 bytes ██ <100 ms ▏ 2023, Day 05, Part 2, Python (interval processing)
116 bytes ▋ <100 ms ▏ 2023, Day 06, Part 1, Python
99 bytes ▌ ~5 s █▋ 2023, Day 06, Part 2, Python (brute force)
105 bytes ▋ <100 ms ▏ 2023, Day 06, Part 2, Python (quadratic equation solving)
274 bytes █▎ <100 ms ▏ 2023, Day 07, Part 1, Python
421 bytes ██ <100 ms ▏ 2023, Day 07, Part 2, Python
202 bytes █ <100 ms ▏ 2023, Day 08, Part 1, Python
238 bytes █▏ <100 ms ▏ 2023, Day 08, Part 2, Python
154 bytes ▊ <100 ms ▏ 2023, Day 09, Part 1, Python
180 bytes ▉ <100 ms ▏ 2023, Day 09, Part 2, Python
343 bytes █▋ <100 ms ▏ 2023, Day 10, Part 1, Python
529 bytes ██▍ ~300 ms ▌ 2023, Day 10, Part 2, Python (flood fill)
396 bytes █▉ <100 ms ▏ 2023, Day 10, Part 2, Python (shoelace/Pick)
310 bytes █▌ <100 ms ▏ 2023, Day 11, Part 1, Python (duplicating rows and columns)
307 bytes █▌ <100 ms ▏ 2023, Day 11, Part 1, Python (coordinate translation)
315 bytes █▌ <100 ms ▏ 2023, Day 11, Part 2, Python (coordinate translation)
365 bytes █▊ ~20 s ██▏ 2023, Day 12, Part 1, Python (brute force)
323 bytes █▌ ~100 ms ▏ 2023, Day 12, Part 1, Python (approach from part 2)
339 bytes █▋ ~3 s █▍ 2023, Day 12, Part 2, Python
211 bytes █ <100 ms ▏ 2023, Day 13, Part 1, Python
260 bytes █▎ <100 ms ▏ 2023, Day 13, Part 2, Python
184 bytes ▉ <100 ms ▏ 2023, Day 14, Part 1, Python (coordinate tuples)
382 bytes █▊ ~1 s █ 2023, Day 14, Part 2, Python (coordinate tuples)
185 bytes ▉ <100 ms ▏ 2023, Day 14, Part 1, Python (complex numbers)
374 bytes █▊ ~1.5 s █▏ 2023, Day 14, Part 2, Python (complex numbers)
201 bytes █ <100 ms ▏ 2023, Day 14, Part 1, Python (string processing)
296 bytes █▍ ~500 ms ▊ 2023, Day 14, Part 2, Python (string processing)
110 bytes ▋ <100 ms ▏ 2023, Day 15, Part 1, Python
290 bytes █▍ <100 ms ▏ 2023, Day 15, Part 2, Python
356 bytes █▋ <100 ms ▏ 2023, Day 16, Part 1, Python
466 bytes ██▏ ~10 s █▉ 2023, Day 16, Part 2, Python
350 bytes █▋ ~1.5 s █▏ 2023, Day 17, Part 1, Python
367 bytes █▊ ~5 s █▋ 2023, Day 17, Part 2, Python
340 bytes █▋ ~150 ms ▎ 2023, Day 18, Part 1, Python (BFS filling)
699 bytes ███▏ ~400 ms ▋ 2023, Day 18, Part 2, Python (BFS filling + coordinate compression)
176 bytes ▉ <100 ms ▏ 2023, Day 18, Part 1, Python (shoelace/Pick)
174 bytes ▉ <100 ms ▏ 2023, Day 18, Part 2, Python (shoelace/Pick)
434 bytes ██ <100 ms ▏ 2023, Day 19, Part 1, Python
525 bytes ██▍ <100 ms ▏ 2023, Day 19, Part 2, Python
476 bytes ██▏ ~100 ms ▏ 2023, Day 20, Part 1, Python
515 bytes ██▍ ~350 ms ▋ 2023, Day 20, Part 2, Python (simulation)
326 bytes █▌ <100 ms ▏ 2023, Day 20, Part 2, Python (input graph parsing)
191 bytes █ <100 ms ▏ 2023, Day 21, Part 1, Python
329 bytes █▌ ~20 s ██▏ 2023, Day 21, Part 2, Python (full simulation)
358 bytes █▋ ~600 ms ▊ 2023, Day 21, Part 2, Python (edge only)
498 bytes ██▎ ~800 ms ▉ 2023, Day 22, Part 1, Python
552 bytes ██▌ ~1 s █ 2023, Day 22, Part 2, Python
417 bytes █▉ ~400 ms ▋ 2023, Day 23, Part 1, Python (direct maze DFS)
425 bytes ██ ~60 s ██▋ 2023, Day 23, Part 2, Python (graph DFS using sets)
503 bytes ██▎ ~35 s ██▍ 2023, Day 23, Part 2, Python (graph DFS using bitfields)
789 bytes ███▌ ~700 ms ▉ 2023, Day 23, Part 2, Python (generating and running C code)
265 bytes █▎ ~100 ms ▏ 2023, Day 24, Part 1, Python
601 bytes ██▊ <100 ms ▏ 2023, Day 24, Part 2, Python (single hailstone triple)
674 bytes ███ <100 ms ▏ 2023, Day 24, Part 2, Python (better numerical stability)
452 bytes ██▏ ~5 s █▋ 2023, Day 25, Part 1, Python
102 bytes ▋ <100 ms ▏ 2024, Day 01, Part 1, Python
92 bytes ▌ <100 ms ▏ 2024, Day 01, Part 2, Python
138 bytes ▊ <100 ms ▏ 2024, Day 02, Part 1, Python
193 bytes █ <100 ms ▏ 2024, Day 02, Part 2, Python
105 bytes ▋ <100 ms ▏ 2024, Day 03, Part 1, Python
149 bytes ▊ <100 ms ▏ 2024, Day 03, Part 2, Python
180 bytes ▉ ~300 ms ▌ 2024, Day 04, Part 1, Python
172 bytes ▉ <100 ms ▏ 2024, Day 04, Part 2, Python
199 bytes █ ~150 ms ▎ 2024, Day 05, Part 1, Python
283 bytes █▍ ~300 ms ▌ 2024, Day 05, Part 2, Python
299 bytes █▍ ~300 ms ▌ 2024, Day 05, Parts 1+2, Python
193 bytes █ <100 ms ▏ 2024, Day 06, Part 1, Python
318 bytes █▌ ~25 s ██▎ 2024, Day 06, Part 2, Python
350 bytes █▋ ~25 s ██▎ 2024, Day 06, Parts 1+2, Python
148 bytes ▊ ~250 ms ▌ 2024, Day 07, Part 1, Python
182 bytes ▉ ~15 s ██ 2024, Day 07, Part 2, Python (naive)
209 bytes █ ~3.5 s █▌ 2024, Day 07, Part 2, Python (optimized)
247 bytes █▎ <100 ms ▏ 2024, Day 08, Part 1, Python
233 bytes █▏ <100 ms ▏ 2024, Day 08, Part 2, Python
195 bytes █ <100 ms ▏ 2024, Day 09, Part 1, Python
246 bytes █▎ ~15 s ██ 2024, Day 09, Part 2, Python (minimum size)
335 bytes █▋ <100 ms ▏ 2024, Day 09, Part 2, Python (speed-optimized)
219 bytes █▏ <100 ms ▏ 2024, Day 10, Part 1, Python
202 bytes █ <100 ms ▏ 2024, Day 10, Part 2, Python
179 bytes ▉ ~350 ms ▋ 2024, Day 11, Part 1, Python
239 bytes █▏ ~200 ms ▍ 2024, Day 11, Part 2, Python (type-and-frequency)
230 bytes █▏ ~200 ms ▍ 2024, Day 11, Part 2, Python (DFS + memoization)
268 bytes █▎ ~500 ms ▊ 2024, Day 12, Part 1, Python
325 bytes █▌ ~300 ms ▌ 2024, Day 12, Part 2, Python
182 bytes ▉ ~1 s █ 2024, Day 13, Part 1, Python
210 bytes █ <100 ms ▏ 2024, Day 13, Part 2, Python
198 bytes █ <100 ms ▏ 2024, Day 14, Part 1, Python
178 bytes ▉ ~1.5 s █▏ 2024, Day 14, Part 2, Python (Unique Positions)
222 bytes █▏ ~15 s ██ 2024, Day 14, Part 2, Python (Run of Adjacent Spots)
235 bytes █▏ ~2.5 s █▍ 2024, Day 14, Part 2, Python (Minimum Variance)
265 bytes █▎ <100 ms ▏ 2024, Day 14, Part 2, Python (Independent Axis Minimum Variance)
335 bytes █▋ ~150 ms ▎ 2024, Day 15, Part 1, Python
436 bytes ██ ~600 ms ▊ 2024, Day 15, Part 2, Python
276 bytes █▍ ~2 s █▎ 2024, Day 16, Part 1, Python
347 bytes █▋ ~3.5 s █▌ 2024, Day 16, Part 2, Python
359 bytes █▋ ~3.5 s █▌ 2024, Day 16, Parts 1+2, Python
279 bytes █▍ <100 ms ▏ 2024, Day 17, Part 1, Python
201 bytes █ <100 ms ▏ 2024, Day 17, Part 2, Python (puzzle input specific)
391 bytes █▉ <100 ms ▏ 2024, Day 17, Part 2, Python (generic)
251 bytes █▎ <100 ms ▏ 2024, Day 18, Part 1, Python
262 bytes █▎ ~10 s █▉ 2024, Day 18, Part 2, Python (brute force)
317 bytes █▌ <100 ms ▏ 2024, Day 18, Part 2, Python (binary search)
125 bytes ▋ <100 ms ▏ 2024, Day 19, Part 1, Python
206 bytes █ ~700 ms ▉ 2024, Day 19, Part 2, Python
283 bytes █▍ ~6 s █▊ 2024, Day 20, Part 1, Python
362 bytes █▊ ~10 s █▉ 2024, Day 20, Part 2, Python
478 bytes ██▎ <100 ms ▏ 2024, Day 21, Part 1, Python
510 bytes ██▍ <100 ms ▏ 2024, Day 21, Part 2, Python
120 bytes ▋ ~2.5 s █▍ 2024, Day 22, Part 1, Python
238 bytes █▏ ~10 s █▉ 2024, Day 22, Part 2, Python
451 bytes ██▏ ~150 ms ▎ 2024, Day 22, Parts 1+2, C
257 bytes █▎ <100 ms ▏ 2024, Day 23, Part 1, Python
241 bytes █▏ <100 ms ▏ 2024, Day 23, Part 2, Python
270 bytes █▎ <100 ms ▏ 2024, Day 24, Part 1, Python
401 bytes █▉ <100 ms ▏ 2024, Day 24, Part 2, Python
165 bytes ▉ ~250 ms ▌ 2024, Day 25, Part 1, Python
83 bytes ▌ <100 ms ▏ 2025, Day 01, Part 1, Python
91 bytes ▌ ~150 ms ▎ 2025, Day 01, Part 2, Python
152 bytes ▊ ~1.5 s █▏ 2025, Day 02, Part 1, Python
153 bytes ▊ ~2 s █▎ 2025, Day 02, Part 2, Python (regular expressions)
150 bytes ▊ ~800 ms ▉ 2025, Day 02, Part 2, Python (string maninpulation)
91 bytes ▌ ~250 ms ▌ 2025, Day 03, Part 1, Python (brute force)
151 bytes ▊ <100 ms ▏ 2025, Day 03, Part 2, Python (greedy algorithm)
191 bytes █ ~300 ms ▌ 2025, Day 03, Part 2, Python (DFS+memoization)
205 bytes █ ~300 ms ▌ 2025, Day 03, Parts 1+2, Python (DFS+memoization)
168 bytes ▉ <100 ms ▏ 2025, Day 04, Part 1, Python
203 bytes █ ~700 ms ▉ 2025, Day 04, Part 2, Python
136 bytes ▊ <100 ms ▏ 2025, Day 05, Part 1, Python
152 bytes ▊ <100 ms ▏ 2025, Day 05, Part 2, Python
89 bytes ▌ <100 ms ▏ 2025, Day 06, Part 1, Python (using eval)
131 bytes ▊ <100 ms ▏ 2025, Day 06, Part 1, Python (safe)
155 bytes ▊ <100 ms ▏ 2025, Day 06, Part 2, Python (using eval)
187 bytes ▉ <100 ms ▏ 2025, Day 06, Part 2, Python (safe)
145 bytes ▊ <100 ms ▏ 2025, Day 07, Part 1, Python
162 bytes ▉ <100 ms ▏ 2025, Day 07, Part 2, Python (dictionary)
155 bytes ▊ <100 ms ▏ 2025, Day 07, Part 2, Python (list)
290 bytes █▍ ~1.5 s █▏ 2025, Day 08, Part 1, Python
255 bytes █▎ ~2.5 s █▍ 2025, Day 08, Part 2, Python
135 bytes ▊ <100 ms ▏ 2025, Day 09, Part 1, Python
343 bytes █▋ ~25 s ██▎ 2025, Day 09, Part 2, Python
303 bytes █▍ ~400 ms ▋ 2025, Day 10, Part 1, Python
240 bytes █▏ ~600 ms ▊ 2025, Day 10, Part 2, Python (using SciPy)
1046 bytes ████▋ ~1.5 s █▏ 2025, Day 10, Part 2, Python (handwritten algebra)
131 bytes ▊ <100 ms ▏ 2025, Day 11, Part 1, Python
208 bytes █ <100 ms ▏ 2025, Day 11, Part 2, Python (tagging)
247 bytes █▎ <100 ms ▏ 2025, Day 11, Part 2, Python (partial paths)
198 bytes █ <100 ms ▏ 2025, Day 12, Part 1, Python

Solutions by Size

Size Day, Part, Solution
1128 bytes █████ 2019, Day 17, Part 2, Python
1106 bytes ████▉ 2019, Day 25, Part 1, Python
1071 bytes ████▊ 2018, Day 15, Parts 1+2, Python
1046 bytes ████▋ 2025, Day 10, Part 2, Python (handwritten algebra)
1000 bytes ████▌ 2021, Day 23, Part 2, Python
982 bytes ████▍ 2021, Day 23, Part 1, Python
879 bytes ███▉ 2020, Day 20, Part 2, Python
842 bytes ███▊ 2019, Day 18, Part 2, Python
839 bytes ███▊ 2018, Day 24, Parts 1+2, Python
812 bytes ███▋ 2018, Day 16, Part 2, Python
789 bytes ███▌ 2023, Day 23, Part 2, Python (generating and running C code)
773 bytes ███▌ 2019, Day 15, Part 2, Python
738 bytes ███▍ 2019, Day 23, Part 2, Python
725 bytes ███▎ 2018, Day 17, Parts 1+2, Python
704 bytes ███▏ 2018, Day 19, Part 2, Python (host computation)
701 bytes ███▏ 2016, Day 11, Part 2, Python (with canonicalization)
701 bytes ███▏ 2019, Day 10, Part 2, Python (with visualization)
699 bytes ███▏ 2023, Day 18, Part 2, Python (BFS filling + coordinate compression)
690 bytes ███▏ 2019, Day 23, Part 1, Python (machines as classes)
674 bytes ███ 2023, Day 24, Part 2, Python (better numerical stability)
668 bytes ███ 2019, Day 23, Part 1, Python (machines as dictionaries)
667 bytes ███ 2019, Day 20, Part 2, Python
666 bytes ███ 2019, Day 18, Part 1, Python
665 bytes ███ 2019, Day 15, Part 1, Python
661 bytes ███ 2018, Day 19, Part 1, Python (plain simulation)
649 bytes ██▉ 2022, Day 22, Part 2, Python (automatic portals)
640 bytes ██▉ 2016, Day 11, Part 1, Python (without canonicalization)
631 bytes ██▉ 2018, Day 16, Part 1, Python
622 bytes ██▉ 2021, Day 18, Part 2, Python
614 bytes ██▊ 2018, Day 22, Part 2, Python (simple)
614 bytes ██▊ 2022, Day 20, Parts 1+2, C (linked list)
610 bytes ██▊ 2021, Day 19, Part 2, Python
603 bytes ██▊ 2019, Day 07, Part 2, Python
601 bytes ██▊ 2018, Day 22, Part 2, Python (optimized)
601 bytes ██▊ 2023, Day 24, Part 2, Python (single hailstone triple)
586 bytes ██▋ 2017, Day 14, Part 2, Python
575 bytes ██▋ 2019, Day 10, Part 2, Python
569 bytes ██▋ 2018, Day 13, Part 2, Python
562 bytes ██▌ 2018, Day 18, Part 2, Python
561 bytes ██▌ 2019, Day 11, Part 2, Python
561 bytes ██▌ 2019, Day 19, Part 2, Python (fast search with slope estimation)
560 bytes ██▌ 2021, Day 18, Part 1, Python
557 bytes ██▌ 2022, Day 22, Part 2, Python (hard-coded portals)
552 bytes ██▌ 2023, Day 22, Part 2, Python
551 bytes ██▌ 2019, Day 24, Part 2, Python
548 bytes ██▌ 2017, Day 18, Part 2, Python
547 bytes ██▌ 2015, Day 22, Part 2, Python
546 bytes ██▌ 2019, Day 17, Part 1, Python
540 bytes ██▌ 2019, Day 21, Part 2, Python
532 bytes ██▍ 2021, Day 19, Part 1, Python
530 bytes ██▍ 2015, Day 22, Part 1, Python
529 bytes ██▍ 2023, Day 10, Part 2, Python (flood fill)
528 bytes ██▍ 2020, Day 16, Part 2, Python
525 bytes ██▍ 2023, Day 19, Part 2, Python
519 bytes ██▍ 2019, Day 19, Part 2, Python (edge walking)
519 bytes ██▍ 2022, Day 20, Parts 1+2, C (order table)
517 bytes ██▍ 2019, Day 13, Part 2, Python
515 bytes ██▍ 2023, Day 20, Part 2, Python (simulation)
511 bytes ██▍ 2022, Day 19, Part 2, Python
510 bytes ██▍ 2022, Day 19, Part 1, Python
510 bytes ██▍ 2024, Day 21, Part 2, Python
507 bytes ██▍ 2022, Day 16, Part 2, Python (BFS+DFS)
504 bytes ██▎ 2020, Day 19, Part 2, Python
503 bytes ██▎ 2023, Day 23, Part 2, Python (graph DFS using bitfields)
499 bytes ██▎ 2019, Day 11, Part 1, Python
498 bytes ██▎ 2023, Day 22, Part 1, Python
494 bytes ██▎ 2019, Day 19, Part 1, Python (brute force)
492 bytes ██▎ 2022, Day 21, Parts 1+2, Python (equation inversion)
488 bytes ██▎ 2019, Day 21, Part 1, Python
480 bytes ██▎ 2018, Day 13, Part 1, Python
478 bytes ██▎ 2024, Day 21, Part 1, Python
476 bytes ██▏ 2023, Day 20, Part 1, Python
473 bytes ██▏ 2019, Day 12, Part 2, Python (derived from part 1 solution)
472 bytes ██▏ 2022, Day 21, Part 2, Python (equation inversion)
468 bytes ██▏ 2022, Day 17, Part 2, Python
466 bytes ██▏ 2022, Day 24, Parts 1+2, Python
466 bytes ██▏ 2023, Day 16, Part 2, Python
462 bytes ██▏ 2019, Day 07, Part 1, Python
457 bytes ██▏ 2018, Day 18, Part 1, Python
455 bytes ██▏ 2021, Day 08, Part 2, Python
452 bytes ██▏ 2017, Day 21, Parts 1+2, Python
452 bytes ██▏ 2023, Day 25, Part 1, Python
451 bytes ██▏ 2024, Day 22, Parts 1+2, C
449 bytes ██▏ 2022, Day 24, Part 2, Python
446 bytes ██ 2020, Day 04, Part 2, Python
442 bytes ██ 2018, Day 11, Part 2, C (optimized pre-summed matrix)
441 bytes ██ 2022, Day 23, Parts 1+2, Python
438 bytes ██ 2021, Day 16, Part 2, Python
436 bytes ██ 2024, Day 15, Part 2, Python
434 bytes ██ 2023, Day 19, Part 1, Python
432 bytes ██ 2019, Day 13, Part 1, Python
432 bytes ██ 2019, Day 20, Part 1, Python
431 bytes ██ 2020, Day 19, Part 1, Python
427 bytes ██ 2018, Day 09, Part 2, C (CDLL) (including compilation)
425 bytes ██ 2016, Day 24, Part 2, Python
425 bytes ██ 2021, Day 22, Part 2, Python (naive approach with coordinate compression)
425 bytes ██ 2023, Day 23, Part 2, Python (graph DFS using sets)
424 bytes ██ 2022, Day 23, Part 1, Python
423 bytes ██ 2018, Day 20, Parts 1+2, Python (correct)
423 bytes ██ 2023, Day 05, Part 2, Python (interval processing)
422 bytes ██ 2021, Day 15, Part 2, Python (Dijkstra)
421 bytes ██ 2023, Day 07, Part 2, Python
419 bytes █▉ 2015, Day 07, Parts 1+2, Python
419 bytes █▉ 2016, Day 24, Part 1, Python
418 bytes █▉ 2019, Day 09, Part 1, Python
418 bytes █▉ 2019, Day 09, Part 2, Python
417 bytes █▉ 2016, Day 21, Part 2, Python
417 bytes █▉ 2023, Day 23, Part 1, Python (direct maze DFS)
410 bytes █▉ 2016, Day 21, Part 1, Python
408 bytes █▉ 2018, Day 07, Part 2, Python
402 bytes █▉ 2020, Day 24, Part 2, Python
402 bytes █▉ 2021, Day 22, Part 2, Python (cube-splitting approach)
401 bytes █▉ 2024, Day 24, Part 2, Python
399 bytes █▉ 2023, Day 03, Part 2, Python (list of spans)
396 bytes █▉ 2023, Day 10, Part 2, Python (shoelace/Pick)
395 bytes █▉ 2022, Day 16, Part 2, Python (DFS only)
395 bytes █▉ 2022, Day 24, Part 1, Python
392 bytes █▉ 2020, Day 18, Part 2, Python (manual parsing)
391 bytes █▉ 2024, Day 17, Part 2, Python (generic)
387 bytes █▊ 2019, Day 22, Part 2, Python (reverse construction)
387 bytes █▊ 2020, Day 23, Part 2, C
383 bytes █▊ 2017, Day 07, Part 2, Python
382 bytes █▊ 2023, Day 14, Part 2, Python (coordinate tuples)
381 bytes █▊ 2018, Day 11, Part 2, C (SAT)
379 bytes █▊ 2022, Day 15, Part 2, Python (coordinate ranges)
377 bytes █▊ 2019, Day 14, Part 2, Python
376 bytes █▊ 2021, Day 15, Part 2, Python (BFS)
375 bytes █▊ 2021, Day 14, Part 2, Python
375 bytes █▊ 2021, Day 20, Part 2, Python
374 bytes █▊ 2023, Day 14, Part 2, Python (complex numbers)
373 bytes █▊ 2020, Day 11, Part 2, Python
371 bytes █▊ 2019, Day 10, Part 1, Python
368 bytes █▊ 2018, Day 20, Parts 1+2, Python (shortcut)
368 bytes █▊ 2019, Day 12, Part 2, Python (full axis separation)
367 bytes █▊ 2016, Day 23, Part 1, Python
367 bytes █▊ 2023, Day 17, Part 2, Python
366 bytes █▊ 2022, Day 17, Part 1, Python
365 bytes █▊ 2018, Day 10, Parts 1+2, Python
365 bytes █▊ 2021, Day 20, Part 1, Python
365 bytes █▊ 2023, Day 12, Part 1, Python (brute force)
362 bytes █▊ 2024, Day 20, Part 2, Python
361 bytes █▋ 2018, Day 11, Part 2, Python (optimized pre-summed matrix)
361 bytes █▋ 2021, Day 25, Part 1, Python (2D array)
359 bytes █▋ 2018, Day 04, Part 1, Python
359 bytes █▋ 2018, Day 04, Part 2, Python
359 bytes █▋ 2024, Day 16, Parts 1+2, Python
358 bytes █▋ 2020, Day 22, Part 2, Python
358 bytes █▋ 2023, Day 21, Part 2, Python (edge only)
357 bytes █▋ 2018, Day 06, Part 1, Python
357 bytes █▋ 2020, Day 17, Part 2, Python
357 bytes █▋ 2022, Day 14, Part 2, Python (coordinate tuples)
356 bytes █▋ 2018, Day 23, Part 2, Python
356 bytes █▋ 2022, Day 22, Part 1, Python
356 bytes █▋ 2023, Day 16, Part 1, Python
355 bytes █▋ 2017, Day 18, Part 1, Python
355 bytes █▋ 2023, Day 03, Part 1, Python (list of spans)
352 bytes █▋ 2021, Day 04, Part 2, Python
351 bytes █▋ 2022, Day 14, Part 2, Python (complex numbers)
350 bytes █▋ 2015, Day 18, Part 2, Python
350 bytes █▋ 2023, Day 17, Part 1, Python
350 bytes █▋ 2024, Day 06, Parts 1+2, Python
347 bytes █▋ 2020, Day 11, Part 1, Python (with 2D arrays)
347 bytes █▋ 2020, Day 20, Part 1, Python
347 bytes █▋ 2024, Day 16, Part 2, Python
346 bytes █▋ 2021, Day 21, Part 2, Python
345 bytes █▋ 2019, Day 12, Part 1, Python
343 bytes █▋ 2022, Day 11, Part 2, Python
343 bytes █▋ 2023, Day 10, Part 1, Python
343 bytes █▋ 2025, Day 09, Part 2, Python
342 bytes █▋ 2018, Day 12, Part 2, Python
342 bytes █▋ 2019, Day 05, Part 2, Python
342 bytes █▋ 2021, Day 04, Part 1, Python
341 bytes █▋ 2017, Day 14, Part 1, Python
341 bytes █▋ 2020, Day 21, Parts 1+2, Python
340 bytes █▋ 2022, Day 15, Part 2, Python (heuristics and boundary intersection)
340 bytes █▋ 2022, Day 16, Part 1, Python (DFS only)
340 bytes █▋ 2023, Day 18, Part 1, Python (BFS filling)
339 bytes █▋ 2023, Day 12, Part 2, Python
337 bytes █▋ 2019, Day 22, Part 2, Python (forward construction)
337 bytes █▋ 2021, Day 25, Part 1, Python (sets)
336 bytes █▋ 2016, Day 10, Part 2, Python
335 bytes █▋ 2015, Day 21, Part 1, Python
335 bytes █▋ 2024, Day 09, Part 2, Python (speed-optimized)
335 bytes █▋ 2024, Day 15, Part 1, Python
334 bytes █▋ 2015, Day 21, Part 2, Python
334 bytes █▋ 2022, Day 14, Part 1, Python (coordinate tuples)
333 bytes █▋ 2022, Day 23, Part 2, Python
332 bytes █▌ 2022, Day 14, Part 1, Python (complex numbers)
332 bytes █▌ 2023, Day 03, Part 2, Python (complex number dictionary)
330 bytes █▌ 2022, Day 21, Parts 1+2, Python (linear solver)
329 bytes █▌ 2023, Day 21, Part 2, Python (full simulation)
328 bytes █▌ 2020, Day 17, Part 1, Python
328 bytes █▌ 2021, Day 09, Part 2, Python (using low point seeds)
327 bytes █▌ 2015, Day 16, Part 2, Python
326 bytes █▌ 2016, Day 16, Part 2, C
326 bytes █▌ 2023, Day 20, Part 2, Python (input graph parsing)
325 bytes █▌ 2022, Day 11, Part 1, Python
325 bytes █▌ 2024, Day 12, Part 2, Python
323 bytes █▌ 2023, Day 12, Part 1, Python (approach from part 2)
321 bytes █▌ 2016, Day 08, Parts 1+2, Python
321 bytes █▌ 2017, Day 23, Part 1, Python
321 bytes █▌ 2021, Day 11, Part 1, Python
321 bytes █▌ 2021, Day 11, Part 2, Python
320 bytes █▌ 2016, Day 10, Part 1, Python
318 bytes █▌ 2022, Day 21, Part 2, Python (linear solver)
318 bytes █▌ 2024, Day 06, Part 2, Python
317 bytes █▌ 2024, Day 18, Part 2, Python (binary search)
315 bytes █▌ 2023, Day 11, Part 2, Python (coordinate translation)
314 bytes █▌ 2015, Day 11, Part 2, Python
314 bytes █▌ 2018, Day 14, Part 2, C
314 bytes █▌ 2019, Day 14, Part 1, Python
314 bytes █▌ 2022, Day 14, Part 2, Python (sweep approach)
312 bytes █▌ 2022, Day 12, Parts 1+2, Python
311 bytes █▌ 2021, Day 09, Part 2, Python (using arbitrary seeds)
310 bytes █▌ 2023, Day 11, Part 1, Python (duplicating rows and columns)
309 bytes █▌ 2017, Day 16, Part 2, Python
307 bytes █▌ 2023, Day 11, Part 1, Python (coordinate translation)
306 bytes █▌ 2022, Day 03, Parts 1+2, x86 DOS Assembly (assembled)
305 bytes █▌ 2018, Day 11, Part 2, Python (pre-summed matrix)
303 bytes █▍ 2017, Day 08, Part 2, Python
303 bytes █▍ 2018, Day 11, Part 2, Python (SAT)
303 bytes █▍ 2025, Day 10, Part 1, Python
299 bytes █▍ 2017, Day 17, Part 2, C (full simulation with circular list)
299 bytes █▍ 2024, Day 05, Parts 1+2, Python
298 bytes █▍ 2015, Day 13, Part 2, Python
297 bytes █▍ 2021, Day 16, Part 1, Python
296 bytes █▍ 2022, Day 09, Part 2, Python (coordinate tuples)
296 bytes █▍ 2023, Day 14, Part 2, Python (string processing)
295 bytes █▍ 2021, Day 05, Part 1, Python (coordinate list)
294 bytes █▍ 2023, Day 03, Part 1, Python (complex number dictionary)
292 bytes █▍ 2015, Day 18, Part 1, Python
292 bytes █▍ 2017, Day 25, Part 1, Python
292 bytes █▍ 2020, Day 14, Part 2, Python
291 bytes █▍ 2017, Day 08, Part 1, Python
291 bytes █▍ 2018, Day 03, Part 2, Python
290 bytes █▍ 2017, Day 20, Part 2, Python
290 bytes █▍ 2023, Day 15, Part 2, Python
290 bytes █▍ 2025, Day 08, Part 1, Python
289 bytes █▍ 2018, Day 12, Part 1, Python
287 bytes █▍ 2015, Day 13, Part 1, Python
286 bytes █▍ 2016, Day 17, Part 2, Python
286 bytes █▍ 2021, Day 13, Part 2, Python
283 bytes █▍ 2024, Day 05, Part 2, Python
283 bytes █▍ 2024, Day 20, Part 1, Python
282 bytes █▍ 2022, Day 05, Part 1, Python
281 bytes █▍ 2015, Day 19, Part 2, Python (greedy DFS)
281 bytes █▍ 2021, Day 24, Part 1, Python
279 bytes █▍ 2017, Day 19, Parts 1+2, Python
279 bytes █▍ 2018, Day 22, Part 1, Python
279 bytes █▍ 2022, Day 09, Part 2, Python (complex numbers)
279 bytes █▍ 2024, Day 17, Part 1, Python
278 bytes █▍ 2021, Day 24, Part 2, Python
277 bytes █▍ 2022, Day 20, Part 2, Python (linked list)
276 bytes █▍ 2015, Day 11, Part 1, Python
276 bytes █▍ 2015, Day 23, Part 1, Python
276 bytes █▍ 2015, Day 23, Part 2, Python
276 bytes █▍ 2016, Day 19, Part 2, C
276 bytes █▍ 2018, Day 09, Part 2, Python (CDLL)
276 bytes █▍ 2022, Day 05, Part 2, Python
276 bytes █▍ 2022, Day 13, Part 1, Python
276 bytes █▍ 2024, Day 16, Part 1, Python
275 bytes █▍ 2015, Day 19, Part 1, Python
275 bytes █▍ 2016, Day 12, Part 2, Python
275 bytes █▍ 2021, Day 05, Part 1, Python (using part 2 approach)
274 bytes █▎ 2023, Day 07, Part 1, Python
273 bytes █▎ 2016, Day 17, Part 1, Python
271 bytes █▎ 2016, Day 14, Part 2, Python
271 bytes █▎ 2018, Day 25, Part 1, Python
271 bytes █▎ 2019, Day 05, Part 1, Python
270 bytes █▎ 2016, Day 12, Part 1, Python
270 bytes █▎ 2024, Day 24, Part 1, Python
269 bytes █▎ 2019, Day 24, Part 1, Python
269 bytes █▎ 2020, Day 11, Part 1, Python (with dictionaries)
268 bytes █▎ 2024, Day 12, Part 1, Python
266 bytes █▎ 2022, Day 20, Part 2, Python (nested loop)
265 bytes █▎ 2023, Day 24, Part 1, Python
265 bytes █▎ 2024, Day 14, Part 2, Python (Independent Axis Minimum Variance)
264 bytes █▎ 2015, Day 16, Part 1, Python
264 bytes █▎ 2022, Day 13, Part 2, Python (with proper parsing and comparison)
263 bytes █▎ 2015, Day 15, Part 2, Python
263 bytes █▎ 2020, Day 18, Part 1, Python
262 bytes █▎ 2017, Day 19, Part 1, Python
262 bytes █▎ 2022, Day 18, Part 2, Python
262 bytes █▎ 2024, Day 18, Part 2, Python (brute force)
261 bytes █▎ 2022, Day 07, Parts 1+2, Python
260 bytes █▎ 2018, Day 05, Part 2, Python (single-pass)
260 bytes █▎ 2018, Day 11, Part 2, Python (naive)
260 bytes █▎ 2023, Day 13, Part 2, Python
259 bytes █▎ 2017, Day 24, Part 2, Python
258 bytes █▎ 2020, Day 08, Part 2, Python
258 bytes █▎ 2021, Day 12, Part 2, Python
257 bytes █▎ 2024, Day 23, Part 1, Python
256 bytes █▎ 2022, Day 01, Parts 1+2, x86 DOS Assembly (assembled)
255 bytes █▎ 2018, Day 06, Part 2, Python
255 bytes █▎ 2025, Day 08, Part 2, Python
254 bytes █▎ 2021, Day 22, Part 1, Python
253 bytes █▎ 2015, Day 15, Part 1, Python
253 bytes █▎ 2016, Day 13, Part 2, Python
253 bytes █▎ 2017, Day 10, Part 2, Python
253 bytes █▎ 2021, Day 05, Part 2, Python
251 bytes █▎ 2021, Day 10, Part 2, Python
251 bytes █▎ 2024, Day 18, Part 1, Python
250 bytes █▎ 2022, Day 21, Part 1, Python
247 bytes █▎ 2018, Day 20, Parts 1+2, Python (new)
247 bytes █▎ 2024, Day 08, Part 1, Python
247 bytes █▎ 2025, Day 11, Part 2, Python (partial paths)
246 bytes █▎ 2018, Day 07, Part 1, Python
246 bytes █▎ 2023, Day 01, Part 2, Python
246 bytes █▎ 2024, Day 09, Part 2, Python (minimum size)
244 bytes █▏ 2020, Day 23, Part 2, Python
242 bytes █▏ 2017, Day 19, Part 2, Python
241 bytes █▏ 2022, Day 20, Part 1, Python (linked list)
241 bytes █▏ 2024, Day 23, Part 2, Python
240 bytes █▏ 2015, Day 19, Part 2, Python (dumb DFS)
240 bytes █▏ 2025, Day 10, Part 2, Python (using SciPy)
239 bytes █▏ 2024, Day 11, Part 2, Python (type-and-frequency)
238 bytes █▏ 2015, Day 24, Parts 1+2, Python (proper algorithm)
238 bytes █▏ 2023, Day 08, Part 2, Python
238 bytes █▏ 2024, Day 22, Part 2, Python
237 bytes █▏ 2021, Day 13, Part 1, Python
236 bytes █▏ 2016, Day 13, Part 1, Python
236 bytes █▏ 2020, Day 18, Part 2, Python (eval hack)
235 bytes █▏ 2017, Day 06, Part 2, Python
235 bytes █▏ 2022, Day 09, Part 1, Python (coordinate tuples)
235 bytes █▏ 2024, Day 14, Part 2, Python (Minimum Variance)
234 bytes █▏ 2017, Day 16, Part 1, Python
234 bytes █▏ 2022, Day 09, Part 1, Python (complex numbers)
233 bytes █▏ 2021, Day 14, Part 1, Python
233 bytes █▏ 2024, Day 08, Part 2, Python
232 bytes █▏ 2015, Day 24, Part 1, Python (brute-force)
232 bytes █▏ 2018, Day 08, Part 2, Python
232 bytes █▏ 2021, Day 17, Part 1, Python
230 bytes █▏ 2023, Day 05, Part 1, Python
230 bytes █▏ 2024, Day 11, Part 2, Python (DFS + memoization)
229 bytes █▏ 2015, Day 06, Part 2, Python
229 bytes █▏ 2017, Day 22, Part 2, Python
227 bytes █▏ 2020, Day 09, Part 2, Python
226 bytes █▏ 2015, Day 06, Part 1, Python
224 bytes █▏ 2022, Day 08, Part 2, Python
223 bytes █▏ 2020, Day 15, Part 2, C
223 bytes █▏ 2022, Day 20, Part 1, Python (nested loop)
222 bytes █▏ 2024, Day 14, Part 2, Python (Run of Adjacent Spots)
220 bytes █▏ 2017, Day 22, Part 1, Python
220 bytes █▏ 2021, Day 12, Part 1, Python
220 bytes █▏ 2022, Day 08, Part 1, Python
220 bytes █▏ 2022, Day 20, Parts 1+2, Python (order table)
219 bytes █▏ 2024, Day 10, Part 1, Python
217 bytes █▏ 2020, Day 22, Part 1, Python
216 bytes █ 2021, Day 17, Part 2, Python
214 bytes █ 2019, Day 03, Part 2, Python
214 bytes █ 2019, Day 16, Part 1, Python (computing and "caching" the transform matrix first)
212 bytes █ 2016, Day 01, Part 2, Python
212 bytes █ 2020, Day 07, Part 2, Python
211 bytes █ 2023, Day 13, Part 1, Python
210 bytes █ 2017, Day 20, Part 1, Python
210 bytes █ 2017, Day 24, Part 1, Python
210 bytes █ 2019, Day 03, Part 1, Python
210 bytes █ 2024, Day 13, Part 2, Python
209 bytes █ 2024, Day 07, Part 2, Python (optimized)
208 bytes █ 2016, Day 07, Part 2, Python
208 bytes █ 2019, Day 22, Part 1, Python (full deck simulation)
208 bytes █ 2021, Day 10, Part 1, Python
208 bytes █ 2025, Day 11, Part 2, Python (tagging)
206 bytes █ 2024, Day 19, Part 2, Python
205 bytes █ 2025, Day 03, Parts 1+2, Python (DFS+memoization)
204 bytes █ 2018, Day 09, Part 1, Python (array)
204 bytes █ 2020, Day 16, Part 1, Python
203 bytes █ 2015, Day 14, Part 2, Python
203 bytes █ 2025, Day 04, Part 2, Python
202 bytes █ 2017, Day 03, Part 2, Python
202 bytes █ 2020, Day 07, Part 1, Python
202 bytes █ 2023, Day 08, Part 1, Python
202 bytes █ 2024, Day 10, Part 2, Python
201 bytes █ 2018, Day 11, Part 1, Python
201 bytes █ 2023, Day 14, Part 1, Python (string processing)
201 bytes █ 2024, Day 17, Part 2, Python (puzzle input specific)
200 bytes █ 2019, Day 08, Part 2, Python
200 bytes █ 2022, Day 15, Part 1, Python (set of coordinates)
199 bytes █ 2017, Day 06, Part 1, Python
199 bytes █ 2021, Day 15, Part 1, Python
199 bytes █ 2022, Day 25, Part 1, Python (direct addition)
199 bytes █ 2024, Day 05, Part 1, Python
198 bytes █ 2016, Day 14, Part 1, Python
198 bytes █ 2024, Day 14, Part 1, Python
198 bytes █ 2025, Day 12, Part 1, Python
197 bytes █ 2017, Day 12, Part 2, Python
197 bytes █ 2018, Day 03, Part 1, Python
197 bytes █ 2019, Day 02, Part 2, Python
197 bytes █ 2020, Day 23, Part 1, Python
195 bytes █ 2017, Day 15, Part 2, Python
195 bytes █ 2018, Day 21, Part 2, Python (host computation)
195 bytes █ 2024, Day 09, Part 1, Python
194 bytes █ 2017, Day 11, Part 2, Python
194 bytes █ 2021, Day 21, Part 1, Python
193 bytes █ 2024, Day 02, Part 2, Python
193 bytes █ 2024, Day 06, Part 1, Python
191 bytes █ 2020, Day 12, Part 2, Python
191 bytes █ 2023, Day 21, Part 1, Python
191 bytes █ 2025, Day 03, Part 2, Python (DFS+memoization)
189 bytes █ 2022, Day 20, Part 2, Python (order table)
187 bytes ▉ 2025, Day 06, Part 2, Python (safe)
186 bytes ▉ 2015, Day 09, Part 1, Python
186 bytes ▉ 2015, Day 09, Part 2, Python
186 bytes ▉ 2015, Day 12, Part 2, Python
186 bytes ▉ 2016, Day 09, Part 2, Python
186 bytes ▉ 2020, Day 24, Part 1, Python
185 bytes ▉ 2019, Day 16, Part 1, Python (computing the transform matrix on-the-fly)
185 bytes ▉ 2021, Day 09, Part 1, Python
185 bytes ▉ 2023, Day 14, Part 1, Python (complex numbers)
184 bytes ▉ 2023, Day 02, Part 2, Python
184 bytes ▉ 2023, Day 14, Part 1, Python (coordinate tuples)
183 bytes ▉ 2022, Day 02, Parts 1+2, x86 DOS Assembly (assembled)
182 bytes ▉ 2024, Day 07, Part 2, Python (naive)
182 bytes ▉ 2024, Day 13, Part 1, Python
181 bytes ▉ 2016, Day 22, Part 2, Python
181 bytes ▉ 2018, Day 05, Part 1, Python (multi-pass)
181 bytes ▉ 2021, Day 03, Part 2, Python
181 bytes ▉ 2021, Day 25, Part 1, Python (strings)
180 bytes ▉ 2016, Day 16, Part 2, Python
180 bytes ▉ 2023, Day 09, Part 2, Python
180 bytes ▉ 2024, Day 04, Part 1, Python
179 bytes ▉ 2016, Day 20, Part 2, Python
179 bytes ▉ 2019, Day 16, Part 2, Python
179 bytes ▉ 2020, Day 14, Part 1, Python
179 bytes ▉ 2023, Day 02, Part 1, Python
179 bytes ▉ 2024, Day 11, Part 1, Python
178 bytes ▉ 2016, Day 04, Part 1, Python
178 bytes ▉ 2024, Day 14, Part 2, Python (Unique Positions)
177 bytes ▉ 2016, Day 02, Part 2, Python
177 bytes ▉ 2018, Day 14, Part 2, Python
177 bytes ▉ 2020, Day 12, Part 1, Python
176 bytes ▉ 2023, Day 18, Part 1, Python (shoelace/Pick)
175 bytes ▉ 2023, Day 04, Part 2, Python
174 bytes ▉ 2023, Day 18, Part 2, Python (shoelace/Pick)
173 bytes ▉ 2016, Day 16, Part 1, Python
172 bytes ▉ 2016, Day 05, Part 2, Python
172 bytes ▉ 2024, Day 04, Part 2, Python
171 bytes ▉ 2022, Day 04, Parts 1+2, x86 DOS Assembly (assembled)
170 bytes ▉ 2017, Day 10, Part 1, Python
170 bytes ▉ 2022, Day 20, Part 1, Python (order table)
169 bytes ▉ 2022, Day 25, Part 1, Python (with conversions)
168 bytes ▉ 2025, Day 04, Part 1, Python
167 bytes ▉ 2017, Day 11, Part 1, Python
167 bytes ▉ 2017, Day 13, Part 2, Python
166 bytes ▉ 2015, Day 17, Part 2, Python
166 bytes ▉ 2016, Day 19, Part 2, Python
166 bytes ▉ 2019, Day 08, Part 1, Python
165 bytes ▉ 2019, Day 06, Part 2, Python
165 bytes ▉ 2022, Day 13, Part 2, Python (shortcut, list-based)
165 bytes ▉ 2024, Day 25, Part 1, Python
164 bytes ▉ 2022, Day 10, Part 2, Python
163 bytes ▉ 2018, Day 08, Part 1, Python
162 bytes ▉ 2025, Day 07, Part 2, Python (dictionary)
161 bytes ▉ 2016, Day 02, Part 1, Python
160 bytes ▉ 2020, Day 04, Part 1, Python
159 bytes ▊ 2017, Day 12, Part 1, Python
158 bytes ▊ 2018, Day 14, Part 1, Python
158 bytes ▊ 2020, Day 03, Part 2, Python
157 bytes ▊ 2020, Day 08, Part 1, Python
155 bytes ▊ 2016, Day 09, Part 1, Python
155 bytes ▊ 2025, Day 06, Part 2, Python (using eval)
155 bytes ▊ 2025, Day 07, Part 2, Python (list)
154 bytes ▊ 2017, Day 15, Part 1, Python
154 bytes ▊ 2023, Day 09, Part 1, Python
153 bytes ▊ 2022, Day 18, Part 1, Python
153 bytes ▊ 2025, Day 02, Part 2, Python (regular expressions)
152 bytes ▊ 2025, Day 02, Part 1, Python
152 bytes ▊ 2025, Day 05, Part 2, Python
151 bytes ▊ 2016, Day 04, Part 2, Python
151 bytes ▊ 2017, Day 02, Part 2, Python
151 bytes ▊ 2025, Day 03, Part 2, Python (greedy algorithm)
150 bytes ▊ 2016, Day 18, Part 2, Python
150 bytes ▊ 2018, Day 23, Part 1, Python
150 bytes ▊ 2025, Day 02, Part 2, Python (string maninpulation)
149 bytes ▊ 2017, Day 13, Part 1, Python
149 bytes ▊ 2017, Day 23, Part 2, Python
149 bytes ▊ 2019, Day 02, Part 1, Python
149 bytes ▊ 2024, Day 03, Part 2, Python
148 bytes ▊ 2015, Day 20, Part 2, Python
148 bytes ▊ 2024, Day 07, Part 1, Python
147 bytes ▊ 2016, Day 07, Part 1, Python
147 bytes ▊ 2016, Day 15, Part 2, Python
146 bytes ▊ 2016, Day 18, Part 1, Python
146 bytes ▊ 2019, Day 22, Part 1, Python (single card tracing)
145 bytes ▊ 2015, Day 25, Part 1, Python
145 bytes ▊ 2025, Day 07, Part 1, Python
144 bytes ▊ 2020, Day 02, Part 2, Python
144 bytes ▊ 2020, Day 09, Part 1, Python
143 bytes ▊ 2016, Day 03, Part 2, Python
143 bytes ▊ 2017, Day 09, Part 1, Python
142 bytes ▊ 2015, Day 05, Part 1, Python
142 bytes ▊ 2016, Day 01, Part 1, Python
142 bytes ▊ 2016, Day 22, Part 1, Python
142 bytes ▊ 2020, Day 05, Part 2, Python
142 bytes ▊ 2022, Day 06, Parts 1+2, x86 DOS Assembly (assembled)
141 bytes ▊ 2015, Day 20, Part 1, Python
138 bytes ▊ 2021, Day 06, Part 2, Python
138 bytes ▊ 2024, Day 02, Part 1, Python
137 bytes ▊ 2020, Day 02, Part 1, Python
137 bytes ▊ 2020, Day 10, Part 2, Python
137 bytes ▊ 2020, Day 13, Part 2, Python
137 bytes ▊ 2021, Day 06, Part 1, Python
137 bytes ▊ 2022, Day 13, Part 2, Python (shortcut, string-based)
136 bytes ▊ 2017, Day 17, Part 2, Python (full simulation with circular list) (estimated)
136 bytes ▊ 2025, Day 05, Part 1, Python
135 bytes ▊ 2018, Day 02, Part 2, Python
135 bytes ▊ 2025, Day 09, Part 1, Python
133 bytes ▊ 2015, Day 10, Part 2, Python
133 bytes ▊ 2020, Day 06, Part 2, Python
132 bytes ▊ 2017, Day 04, Part 2, Python
131 bytes ▊ 2016, Day 19, Part 1, Python
131 bytes ▊ 2025, Day 06, Part 1, Python (safe)
131 bytes ▊ 2025, Day 11, Part 1, Python
130 bytes ▋ 2018, Day 21, Part 1, Python (host computation)
129 bytes ▋ 2018, Day 02, Part 1, Python
128 bytes ▋ 2015, Day 03, Part 2, Python
128 bytes ▋ 2017, Day 07, Part 1, Python
128 bytes ▋ 2021, Day 07, Part 2, Python
128 bytes ▋ 2022, Day 03, Part 2, Python
127 bytes ▋ 2016, Day 20, Part 1, Python
127 bytes ▋ 2022, Day 10, Part 1, Python
125 bytes ▋ 2024, Day 19, Part 1, Python
124 bytes ▋ 2016, Day 15, Part 1, Python
123 bytes ▋ 2016, Day 05, Part 1, Python
122 bytes ▋ 2015, Day 14, Part 1, Python
122 bytes ▋ 2019, Day 04, Part 2, Python
122 bytes ▋ 2022, Day 03, Part 1, Python
121 bytes ▋ 2015, Day 10, Part 1, Python
121 bytes ▋ 2019, Day 04, Part 1, Python
120 bytes ▋ 2021, Day 03, Part 1, Python
120 bytes ▋ 2024, Day 22, Part 1, Python
118 bytes ▋ 2018, Day 01, Part 2, Python
118 bytes ▋ 2020, Day 13, Part 1, Python
118 bytes ▋ 2021, Day 08, Part 1, Python
118 bytes ▋ 2022, Day 04, Part 1, Python
117 bytes ▋ 2015, Day 05, Part 2, Python
116 bytes ▋ 2020, Day 15, Part 2, Python
116 bytes ▋ 2020, Day 25, Part 1, Python
116 bytes ▋ 2023, Day 06, Part 1, Python
115 bytes ▋ 2017, Day 04, Part 1, Python
114 bytes ▋ 2016, Day 25, Part 1, Python
114 bytes ▋ 2021, Day 02, Part 2, Python
114 bytes ▋ 2023, Day 04, Part 1, Python
113 bytes ▋ 2019, Day 06, Part 1, Python
112 bytes ▋ 2015, Day 17, Part 1, Python
112 bytes ▋ 2017, Day 05, Part 2, Python
112 bytes ▋ 2020, Day 15, Part 1, Python
110 bytes ▋ 2023, Day 15, Part 1, Python
109 bytes ▋ 2015, Day 03, Part 1, Python
109 bytes ▋ 2017, Day 09, Part 2, Python
106 bytes ▋ 2021, Day 02, Part 1, Python (using complex numbers)
106 bytes ▋ 2022, Day 21, Part 1, Python (evil exec hackery)
105 bytes ▋ 2021, Day 02, Part 1, Python (using separate components)
105 bytes ▋ 2023, Day 06, Part 2, Python (quadratic equation solving)
105 bytes ▋ 2024, Day 03, Part 1, Python
104 bytes ▋ 2020, Day 10, Part 1, Python
104 bytes ▋ 2021, Day 07, Part 1, Python
103 bytes ▋ 2022, Day 04, Part 2, Python
102 bytes ▋ 2017, Day 05, Part 1, Python
102 bytes ▋ 2024, Day 01, Part 1, Python
101 bytes ▌ 2022, Day 02, Part 1, Python
100 bytes ▌ 2016, Day 23, Part 2, Python
100 bytes ▌ 2017, Day 01, Part 2, Python
100 bytes ▌ 2020, Day 03, Part 1, Python
99 bytes ▌ 2015, Day 02, Part 1, Python
99 bytes ▌ 2020, Day 05, Part 1, Python
99 bytes ▌ 2023, Day 06, Part 2, Python (brute force)
98 bytes ▌ 2020, Day 01, Part 2, Python
95 bytes ▌ 2015, Day 02, Part 2, Python
95 bytes ▌ 2022, Day 01, Part 2, Python
93 bytes ▌ 2017, Day 01, Part 1, Python
92 bytes ▌ 2015, Day 01, Part 2, Python
92 bytes ▌ 2016, Day 06, Part 1, Python
92 bytes ▌ 2016, Day 06, Part 2, Python
92 bytes ▌ 2021, Day 01, Part 2, Python
92 bytes ▌ 2024, Day 01, Part 2, Python
91 bytes ▌ 2022, Day 02, Part 2, Python
91 bytes ▌ 2025, Day 01, Part 2, Python
91 bytes ▌ 2025, Day 03, Part 1, Python (brute force)
90 bytes ▌ 2017, Day 17, Part 2, Python (tracking)
89 bytes ▌ 2015, Day 04, Part 1, Python
89 bytes ▌ 2015, Day 04, Part 2, Python
89 bytes ▌ 2025, Day 06, Part 1, Python (using eval)
88 bytes ▌ 2022, Day 06, Part 2, Python
88 bytes ▌ 2023, Day 01, Part 1, Python
87 bytes ▌ 2017, Day 02, Part 1, Python
86 bytes ▌ 2022, Day 06, Part 1, Python
84 bytes ▌ 2016, Day 03, Part 1, Python
83 bytes ▌ 2025, Day 01, Part 1, Python
82 bytes ▌ 2022, Day 01, Part 1, Python
80 bytes ▌ 2017, Day 17, Part 1, Python (full simulation with arrays)
80 bytes ▌ 2019, Day 01, Part 2, Python
79 bytes ▌ 2020, Day 01, Part 1, Python
77 bytes ▌ 2020, Day 06, Part 1, Python
75 bytes ▌ 2015, Day 12, Part 1, Python
68 bytes ▍ 2017, Day 03, Part 1, Python
68 bytes ▍ 2021, Day 01, Part 1, Python
66 bytes ▍ 2015, Day 08, Part 2, Python
65 bytes ▍ 2015, Day 08, Part 1, Python
59 bytes ▍ 2015, Day 01, Part 1, Python
48 bytes ▍ 2019, Day 01, Part 1, Python
38 bytes ▎ 2018, Day 01, Part 1, Python

Solutions by Runtime

Runtime Day, Part, Solution
~10 h █████ 2017, Day 17, Part 2, Python (full simulation with circular list) (estimated)
~40 m ████ 2021, Day 22, Part 2, Python (naive approach with coordinate compression)
~20 m ███▊ 2021, Day 25, Part 1, Python (sets)
~15 m ███▋ 2015, Day 24, Part 1, Python (brute-force)
~10 m ███▌ 2018, Day 11, Part 2, Python (naive)
~8 m ███▍ 2017, Day 17, Part 2, C (full simulation with circular list)
~3 m ███ 2022, Day 15, Part 2, Python (coordinate ranges)
~1.5 m ██▊ 2022, Day 16, Part 2, Python (DFS only)
~60 s ██▋ 2023, Day 23, Part 2, Python (graph DFS using sets)
~40 s ██▍ 2016, Day 05, Part 2, Python
~35 s ██▍ 2023, Day 23, Part 2, Python (graph DFS using bitfields)
~30 s ██▎ 2016, Day 14, Part 2, Python
~30 s ██▎ 2018, Day 09, Part 2, Python (CDLL)
~30 s ██▎ 2019, Day 10, Part 2, Python (with visualization)
~30 s ██▎ 2021, Day 19, Part 1, Python
~30 s ██▎ 2021, Day 19, Part 2, Python
~30 s ██▎ 2022, Day 19, Part 2, Python
~25 s ██▎ 2018, Day 11, Part 2, Python (pre-summed matrix)
~25 s ██▎ 2024, Day 06, Part 2, Python
~25 s ██▎ 2024, Day 06, Parts 1+2, Python
~25 s ██▎ 2025, Day 09, Part 2, Python
~20 s ██▏ 2016, Day 12, Part 2, Python
~20 s ██▏ 2018, Day 14, Part 2, Python
~20 s ██▏ 2018, Day 15, Parts 1+2, Python
~20 s ██▏ 2022, Day 16, Part 2, Python (BFS+DFS)
~20 s ██▏ 2022, Day 20, Part 2, Python (nested loop)
~20 s ██▏ 2023, Day 12, Part 1, Python (brute force)
~20 s ██▏ 2023, Day 21, Part 2, Python (full simulation)
~15 s ██ 2016, Day 11, Part 1, Python (without canonicalization)
~15 s ██ 2020, Day 15, Part 2, Python
~15 s ██ 2020, Day 23, Part 2, Python
~15 s ██ 2021, Day 22, Part 2, Python (cube-splitting approach)
~15 s ██ 2022, Day 23, Part 2, Python
~15 s ██ 2022, Day 23, Parts 1+2, Python
~15 s ██ 2024, Day 07, Part 2, Python (naive)
~15 s ██ 2024, Day 09, Part 2, Python (minimum size)
~15 s ██ 2024, Day 14, Part 2, Python (Run of Adjacent Spots)
~12 s ██ 2017, Day 17, Part 2, Python (tracking)
~10 s █▉ 2016, Day 05, Part 1, Python
~10 s █▉ 2016, Day 16, Part 2, Python
~10 s █▉ 2017, Day 05, Part 2, Python
~10 s █▉ 2017, Day 15, Part 1, Python
~10 s █▉ 2018, Day 22, Part 2, Python (simple)
~10 s █▉ 2019, Day 16, Part 1, Python (computing the transform matrix on-the-fly)
~10 s █▉ 2019, Day 16, Part 2, Python
~10 s █▉ 2021, Day 20, Part 2, Python
~10 s █▉ 2021, Day 24, Part 1, Python
~10 s █▉ 2023, Day 16, Part 2, Python
~10 s █▉ 2024, Day 18, Part 2, Python (brute force)
~10 s █▉ 2024, Day 20, Part 2, Python
~10 s █▉ 2024, Day 22, Part 2, Python
~8 s █▊ 2016, Day 19, Part 2, Python
~8 s █▊ 2017, Day 15, Part 2, Python
~7.5 s █▊ 2019, Day 10, Part 2, Python
~7 s █▊ 2016, Day 18, Part 2, Python
~7 s █▊ 2018, Day 25, Part 1, Python
~7 s █▊ 2021, Day 15, Part 2, Python (BFS)
~7 s █▊ 2022, Day 19, Part 1, Python
~6 s █▊ 2015, Day 10, Part 2, Python
~6 s █▊ 2015, Day 11, Part 2, Python
~6 s █▊ 2016, Day 11, Part 2, Python (with canonicalization)
~6 s █▊ 2018, Day 11, Part 2, Python (optimized pre-summed matrix)
~6 s █▊ 2019, Day 12, Part 2, Python (full axis separation)
~6 s █▊ 2019, Day 25, Part 1, Python
~6 s █▊ 2024, Day 20, Part 1, Python
~5 s █▋ 2015, Day 06, Part 2, Python
~5 s █▋ 2015, Day 22, Part 2, Python
~5 s █▋ 2017, Day 13, Part 2, Python
~5 s █▋ 2017, Day 22, Part 2, Python
~5 s █▋ 2017, Day 24, Part 1, Python
~5 s █▋ 2017, Day 24, Part 2, Python
~5 s █▋ 2017, Day 25, Part 1, Python
~5 s █▋ 2018, Day 24, Parts 1+2, Python
~5 s █▋ 2019, Day 12, Part 2, Python (derived from part 1 solution)
~5 s █▋ 2019, Day 16, Part 1, Python (computing and "caching" the transform matrix first)
~5 s █▋ 2019, Day 19, Part 2, Python (edge walking)
~5 s █▋ 2020, Day 25, Part 1, Python
~5 s █▋ 2023, Day 06, Part 2, Python (brute force)
~5 s █▋ 2023, Day 17, Part 2, Python
~5 s █▋ 2023, Day 25, Part 1, Python
~4 s █▌ 2015, Day 20, Part 2, Python
~4 s █▌ 2018, Day 05, Part 1, Python (multi-pass)
~4 s █▌ 2018, Day 22, Part 2, Python (optimized)
~4 s █▌ 2021, Day 18, Part 2, Python
~3.5 s █▌ 2015, Day 04, Part 2, Python
~3.5 s █▌ 2015, Day 06, Part 1, Python
~3.5 s █▌ 2016, Day 17, Part 2, Python
~3.5 s █▌ 2018, Day 11, Part 2, Python (SAT)
~3.5 s █▌ 2019, Day 19, Part 1, Python (brute force)
~3.5 s █▌ 2019, Day 21, Part 2, Python
~3.5 s █▌ 2022, Day 11, Part 2, Python
~3.5 s █▌ 2024, Day 07, Part 2, Python (optimized)
~3.5 s █▌ 2024, Day 16, Part 2, Python
~3.5 s █▌ 2024, Day 16, Parts 1+2, Python
~3 s █▍ 2015, Day 17, Part 1, Python
~3 s █▍ 2015, Day 17, Part 2, Python
~3 s █▍ 2015, Day 20, Part 1, Python
~3 s █▍ 2015, Day 25, Part 1, Python
~3 s █▍ 2017, Day 21, Parts 1+2, Python
~3 s █▍ 2018, Day 18, Part 2, Python
~3 s █▍ 2018, Day 19, Part 1, Python (plain simulation)
~3 s █▍ 2019, Day 13, Part 2, Python
~3 s █▍ 2020, Day 11, Part 2, Python
~3 s █▍ 2021, Day 25, Part 1, Python (2D array)
~3 s █▍ 2023, Day 12, Part 2, Python
~2.5 s █▍ 2019, Day 09, Part 2, Python
~2.5 s █▍ 2020, Day 11, Part 1, Python (with dictionaries)
~2.5 s █▍ 2020, Day 22, Part 2, Python
~2.5 s █▍ 2021, Day 23, Part 1, Python
~2.5 s █▍ 2021, Day 23, Part 2, Python
~2.5 s █▍ 2022, Day 16, Part 1, Python (DFS only)
~2.5 s █▍ 2024, Day 14, Part 2, Python (Minimum Variance)
~2.5 s █▍ 2024, Day 22, Part 1, Python
~2.5 s █▍ 2025, Day 08, Part 2, Python
~2 s █▎ 2016, Day 14, Part 1, Python
~2 s █▎ 2018, Day 05, Part 2, Python (single-pass)
~2 s █▎ 2018, Day 06, Part 1, Python
~2 s █▎ 2018, Day 17, Parts 1+2, Python
~2 s █▎ 2020, Day 24, Part 2, Python
~2 s █▎ 2021, Day 22, Part 1, Python
~2 s █▎ 2022, Day 01, Parts 1+2, x86 DOS Assembly (assembled)
~2 s █▎ 2022, Day 14, Part 2, Python (complex numbers)
~2 s █▎ 2022, Day 20, Part 1, Python (nested loop)
~2 s █▎ 2022, Day 20, Part 2, Python (linked list)
~2 s █▎ 2024, Day 16, Part 1, Python
~2 s █▎ 2025, Day 02, Part 2, Python (regular expressions)
~1.5 s █▏ 2015, Day 13, Part 2, Python
~1.5 s █▏ 2016, Day 19, Part 1, Python
~1.5 s █▏ 2019, Day 10, Part 1, Python
~1.5 s █▏ 2020, Day 11, Part 1, Python (with 2D arrays)
~1.5 s █▏ 2020, Day 15, Part 2, C
~1.5 s █▏ 2020, Day 17, Part 2, Python
~1.5 s █▏ 2022, Day 14, Part 2, Python (coordinate tuples)
~1.5 s █▏ 2022, Day 15, Part 2, Python (heuristics and boundary intersection)
~1.5 s █▏ 2022, Day 20, Part 2, Python (order table)
~1.5 s █▏ 2022, Day 20, Parts 1+2, Python (order table)
~1.5 s █▏ 2022, Day 24, Part 2, Python
~1.5 s █▏ 2022, Day 24, Parts 1+2, Python
~1.5 s █▏ 2023, Day 14, Part 2, Python (complex numbers)
~1.5 s █▏ 2023, Day 17, Part 1, Python
~1.5 s █▏ 2024, Day 14, Part 2, Python (Unique Positions)
~1.5 s █▏ 2025, Day 02, Part 1, Python
~1.5 s █▏ 2025, Day 08, Part 1, Python
~1.5 s █▏ 2025, Day 10, Part 2, Python (handwritten algebra)
~1 s █ 2015, Day 15, Part 1, Python
~1 s █ 2015, Day 15, Part 2, Python
~1 s █ 2015, Day 18, Part 1, Python
~1 s █ 2015, Day 18, Part 2, Python
~1 s █ 2015, Day 22, Part 1, Python
~1 s █ 2016, Day 15, Part 2, Python
~1 s █ 2018, Day 03, Part 2, Python
~1 s █ 2018, Day 19, Part 2, Python (host computation)
~1 s █ 2019, Day 04, Part 1, Python
~1 s █ 2019, Day 04, Part 2, Python
~1 s █ 2019, Day 23, Part 2, Python
~1 s █ 2021, Day 12, Part 2, Python
~1 s █ 2021, Day 15, Part 2, Python (Dijkstra)
~1 s █ 2021, Day 17, Part 2, Python
~1 s █ 2021, Day 24, Part 2, Python
~1 s █ 2022, Day 15, Part 1, Python (set of coordinates)
~1 s █ 2023, Day 14, Part 2, Python (coordinate tuples)
~1 s █ 2023, Day 22, Part 2, Python
~1 s █ 2024, Day 13, Part 1, Python
~800 ms ▉ 2023, Day 03, Part 1, Python (list of spans)
~800 ms ▉ 2023, Day 22, Part 1, Python
~800 ms ▉ 2025, Day 02, Part 2, Python (string maninpulation)
~750 ms ▉ 2017, Day 16, Part 2, Python
~750 ms ▉ 2017, Day 23, Part 2, Python
~750 ms ▉ 2018, Day 06, Part 2, Python
~700 ms ▉ 2015, Day 10, Part 1, Python
~700 ms ▉ 2019, Day 18, Part 2, Python
~700 ms ▉ 2023, Day 23, Part 2, Python (generating and running C code)
~700 ms ▉ 2024, Day 19, Part 2, Python
~700 ms ▉ 2025, Day 04, Part 2, Python
~600 ms ▊ 2019, Day 02, Part 2, Python
~600 ms ▊ 2019, Day 20, Part 2, Python
~600 ms ▊ 2019, Day 24, Part 2, Python
~600 ms ▊ 2020, Day 01, Part 2, Python
~600 ms ▊ 2020, Day 23, Part 2, C
~600 ms ▊ 2022, Day 20, Parts 1+2, C (linked list)
~600 ms ▊ 2023, Day 21, Part 2, Python (edge only)
~600 ms ▊ 2024, Day 15, Part 2, Python
~600 ms ▊ 2025, Day 10, Part 2, Python (using SciPy)
~500 ms ▊ 2016, Day 12, Part 1, Python
~500 ms ▊ 2017, Day 14, Part 1, Python
~500 ms ▊ 2017, Day 14, Part 2, Python
~500 ms ▊ 2018, Day 09, Part 1, Python (array)
~500 ms ▊ 2018, Day 14, Part 2, C
~500 ms ▊ 2018, Day 23, Part 2, Python
~500 ms ▊ 2019, Day 11, Part 1, Python
~500 ms ▊ 2019, Day 17, Part 2, Python
~500 ms ▊ 2021, Day 17, Part 1, Python
~500 ms ▊ 2022, Day 21, Part 1, Python (evil exec hackery)
~500 ms ▊ 2022, Day 24, Part 1, Python
~500 ms ▊ 2023, Day 14, Part 2, Python (string processing)
~500 ms ▊ 2024, Day 12, Part 1, Python
~400 ms ▋ 2018, Day 14, Part 1, Python
~400 ms ▋ 2021, Day 07, Part 2, Python
~400 ms ▋ 2023, Day 03, Part 2, Python (list of spans)
~400 ms ▋ 2023, Day 18, Part 2, Python (BFS filling + coordinate compression)
~400 ms ▋ 2023, Day 23, Part 1, Python (direct maze DFS)
~400 ms ▋ 2025, Day 10, Part 1, Python
~350 ms ▋ 2017, Day 20, Part 1, Python
~350 ms ▋ 2017, Day 20, Part 2, Python
~350 ms ▋ 2018, Day 03, Part 1, Python
~350 ms ▋ 2018, Day 20, Parts 1+2, Python (shortcut)
~350 ms ▋ 2018, Day 20, Parts 1+2, Python (correct)
~350 ms ▋ 2019, Day 19, Part 2, Python (fast search with slope estimation)
~350 ms ▋ 2021, Day 18, Part 1, Python
~350 ms ▋ 2021, Day 25, Part 1, Python (strings)
~350 ms ▋ 2022, Day 17, Part 2, Python
~350 ms ▋ 2023, Day 20, Part 2, Python (simulation)
~350 ms ▋ 2024, Day 11, Part 1, Python
~300 ms ▌ 2019, Day 15, Part 1, Python
~300 ms ▌ 2019, Day 15, Part 2, Python
~300 ms ▌ 2019, Day 18, Part 1, Python
~300 ms ▌ 2020, Day 19, Part 2, Python
~300 ms ▌ 2023, Day 10, Part 2, Python (flood fill)
~300 ms ▌ 2024, Day 04, Part 1, Python
~300 ms ▌ 2024, Day 05, Part 2, Python
~300 ms ▌ 2024, Day 05, Parts 1+2, Python
~300 ms ▌ 2024, Day 12, Part 2, Python
~300 ms ▌ 2025, Day 03, Part 2, Python (DFS+memoization)
~300 ms ▌ 2025, Day 03, Parts 1+2, Python (DFS+memoization)
~250 ms ▌ 2019, Day 17, Part 1, Python
~250 ms ▌ 2020, Day 09, Part 2, Python
~250 ms ▌ 2021, Day 05, Part 2, Python
~250 ms ▌ 2021, Day 21, Part 2, Python
~250 ms ▌ 2024, Day 07, Part 1, Python
~250 ms ▌ 2024, Day 25, Part 1, Python
~250 ms ▌ 2025, Day 03, Part 1, Python (brute force)
~200 ms ▍ 2016, Day 22, Part 1, Python
~200 ms ▍ 2017, Day 18, Part 2, Python
~200 ms ▍ 2018, Day 09, Part 2, C (CDLL) (including compilation)
~200 ms ▍ 2022, Day 20, Parts 1+2, C (order table)
~200 ms ▍ 2024, Day 11, Part 2, Python (type-and-frequency)
~200 ms ▍ 2024, Day 11, Part 2, Python (DFS + memoization)
~150 ms ▎ 2015, Day 04, Part 1, Python
~150 ms ▎ 2015, Day 11, Part 1, Python
~150 ms ▎ 2015, Day 13, Part 1, Python
~150 ms ▎ 2016, Day 16, Part 2, C
~150 ms ▎ 2018, Day 11, Part 1, Python
~150 ms ▎ 2018, Day 11, Part 2, C (optimized pre-summed matrix)
~150 ms ▎ 2018, Day 11, Part 2, C (SAT)
~150 ms ▎ 2018, Day 13, Part 2, Python
~150 ms ▎ 2019, Day 03, Part 1, Python
~150 ms ▎ 2019, Day 03, Part 2, Python
~150 ms ▎ 2019, Day 07, Part 1, Python
~150 ms ▎ 2019, Day 07, Part 2, Python
~150 ms ▎ 2019, Day 21, Part 1, Python
~150 ms ▎ 2019, Day 23, Part 1, Python (machines as classes)
~150 ms ▎ 2019, Day 23, Part 1, Python (machines as dictionaries)
~150 ms ▎ 2020, Day 09, Part 1, Python
~150 ms ▎ 2020, Day 14, Part 2, Python
~150 ms ▎ 2020, Day 20, Part 2, Python
~150 ms ▎ 2021, Day 05, Part 1, Python (using part 2 approach)
~150 ms ▎ 2021, Day 07, Part 1, Python
~150 ms ▎ 2022, Day 09, Part 2, Python (complex numbers)
~150 ms ▎ 2022, Day 18, Part 2, Python
~150 ms ▎ 2022, Day 20, Part 1, Python (linked list)
~150 ms ▎ 2022, Day 22, Part 2, Python (automatic portals)
~150 ms ▎ 2022, Day 23, Part 1, Python
~150 ms ▎ 2023, Day 18, Part 1, Python (BFS filling)
~150 ms ▎ 2024, Day 05, Part 1, Python
~150 ms ▎ 2024, Day 15, Part 1, Python
~150 ms ▎ 2024, Day 22, Parts 1+2, C
~150 ms ▎ 2025, Day 01, Part 2, Python
~100 ms ▏ 2015, Day 09, Part 1, Python
~100 ms ▏ 2015, Day 09, Part 2, Python
~100 ms ▏ 2016, Day 17, Part 1, Python
~100 ms ▏ 2016, Day 19, Part 2, C
~100 ms ▏ 2017, Day 05, Part 1, Python
~100 ms ▏ 2017, Day 16, Part 1, Python
~100 ms ▏ 2018, Day 20, Parts 1+2, Python (new)
~100 ms ▏ 2019, Day 11, Part 2, Python
~100 ms ▏ 2019, Day 13, Part 1, Python
~100 ms ▏ 2019, Day 22, Part 1, Python (full deck simulation)
~100 ms ▏ 2021, Day 09, Part 2, Python (using arbitrary seeds)
~100 ms ▏ 2023, Day 12, Part 1, Python (approach from part 2)
~100 ms ▏ 2023, Day 20, Part 1, Python
~100 ms ▏ 2023, Day 24, Part 1, Python
<100 ms ▏ 2015, Day 01, Part 1, Python
<100 ms ▏ 2015, Day 01, Part 2, Python
<100 ms ▏ 2015, Day 02, Part 1, Python
<100 ms ▏ 2015, Day 02, Part 2, Python
<100 ms ▏ 2015, Day 03, Part 1, Python
<100 ms ▏ 2015, Day 03, Part 2, Python
<100 ms ▏ 2015, Day 05, Part 1, Python
<100 ms ▏ 2015, Day 05, Part 2, Python
<100 ms ▏ 2015, Day 07, Parts 1+2, Python
<100 ms ▏ 2015, Day 08, Part 1, Python
<100 ms ▏ 2015, Day 08, Part 2, Python
<100 ms ▏ 2015, Day 12, Part 1, Python
<100 ms ▏ 2015, Day 12, Part 2, Python
<100 ms ▏ 2015, Day 14, Part 1, Python
<100 ms ▏ 2015, Day 14, Part 2, Python
<100 ms ▏ 2015, Day 16, Part 1, Python
<100 ms ▏ 2015, Day 16, Part 2, Python
<100 ms ▏ 2015, Day 19, Part 1, Python
<100 ms ▏ 2015, Day 19, Part 2, Python (dumb DFS)
<100 ms ▏ 2015, Day 19, Part 2, Python (greedy DFS)
<100 ms ▏ 2015, Day 21, Part 1, Python
<100 ms ▏ 2015, Day 21, Part 2, Python
<100 ms ▏ 2015, Day 23, Part 1, Python
<100 ms ▏ 2015, Day 23, Part 2, Python
<100 ms ▏ 2015, Day 24, Parts 1+2, Python (proper algorithm)
<100 ms ▏ 2016, Day 01, Part 1, Python
<100 ms ▏ 2016, Day 01, Part 2, Python
<100 ms ▏ 2016, Day 02, Part 1, Python
<100 ms ▏ 2016, Day 02, Part 2, Python
<100 ms ▏ 2016, Day 03, Part 1, Python
<100 ms ▏ 2016, Day 03, Part 2, Python
<100 ms ▏ 2016, Day 04, Part 1, Python
<100 ms ▏ 2016, Day 04, Part 2, Python
<100 ms ▏ 2016, Day 06, Part 1, Python
<100 ms ▏ 2016, Day 06, Part 2, Python
<100 ms ▏ 2016, Day 07, Part 1, Python
<100 ms ▏ 2016, Day 07, Part 2, Python
<100 ms ▏ 2016, Day 08, Parts 1+2, Python
<100 ms ▏ 2016, Day 09, Part 1, Python
<100 ms ▏ 2016, Day 09, Part 2, Python
<100 ms ▏ 2016, Day 10, Part 1, Python
<100 ms ▏ 2016, Day 10, Part 2, Python
<100 ms ▏ 2016, Day 13, Part 1, Python
<100 ms ▏ 2016, Day 13, Part 2, Python
<100 ms ▏ 2016, Day 15, Part 1, Python
<100 ms ▏ 2016, Day 16, Part 1, Python
<100 ms ▏ 2016, Day 18, Part 1, Python
<100 ms ▏ 2016, Day 20, Part 1, Python
<100 ms ▏ 2016, Day 20, Part 2, Python
<100 ms ▏ 2016, Day 21, Part 1, Python
<100 ms ▏ 2016, Day 21, Part 2, Python
<100 ms ▏ 2016, Day 22, Part 2, Python
<100 ms ▏ 2016, Day 23, Part 1, Python
<100 ms ▏ 2016, Day 23, Part 2, Python
<100 ms ▏ 2016, Day 24, Part 1, Python
<100 ms ▏ 2016, Day 24, Part 2, Python
<100 ms ▏ 2016, Day 25, Part 1, Python
<100ms ▏ 2017, Day 01, Part 1, Python
<100ms ▏ 2017, Day 01, Part 2, Python
<100 ms ▏ 2017, Day 02, Part 1, Python
<100 ms ▏ 2017, Day 02, Part 2, Python
<100 ms ▏ 2017, Day 03, Part 1, Python
<100 ms ▏ 2017, Day 03, Part 2, Python
<100 ms ▏ 2017, Day 04, Part 1, Python
<100 ms ▏ 2017, Day 04, Part 2, Python
<100 ms ▏ 2017, Day 06, Part 1, Python
<100 ms ▏ 2017, Day 06, Part 2, Python
<100 ms ▏ 2017, Day 07, Part 1, Python
<100 ms ▏ 2017, Day 07, Part 2, Python
<100 ms ▏ 2017, Day 08, Part 1, Python
<100 ms ▏ 2017, Day 08, Part 2, Python
<100 ms ▏ 2017, Day 09, Part 1, Python
<100 ms ▏ 2017, Day 09, Part 2, Python
<100 ms ▏ 2017, Day 10, Part 1, Python
<100 ms ▏ 2017, Day 10, Part 2, Python
<100 ms ▏ 2017, Day 11, Part 1, Python
<100 ms ▏ 2017, Day 11, Part 2, Python
<100 ms ▏ 2017, Day 12, Part 1, Python
<100 ms ▏ 2017, Day 12, Part 2, Python
<100 ms ▏ 2017, Day 13, Part 1, Python
<100 ms ▏ 2017, Day 17, Part 1, Python (full simulation with arrays)
<100 ms ▏ 2017, Day 18, Part 1, Python
<100 ms ▏ 2017, Day 19, Part 1, Python
<100 ms ▏ 2017, Day 19, Part 2, Python
<100 ms ▏ 2017, Day 19, Parts 1+2, Python
<100 ms ▏ 2017, Day 22, Part 1, Python
<100 ms ▏ 2017, Day 23, Part 1, Python
<100 ms ▏ 2018, Day 01, Part 1, Python
<100 ms ▏ 2018, Day 01, Part 2, Python
<100 ms ▏ 2018, Day 02, Part 1, Python
<100 ms ▏ 2018, Day 02, Part 2, Python
<100 ms ▏ 2018, Day 04, Part 1, Python
<100 ms ▏ 2018, Day 04, Part 2, Python
<100 ms ▏ 2018, Day 07, Part 1, Python
<100 ms ▏ 2018, Day 07, Part 2, Python
<100 ms ▏ 2018, Day 08, Part 1, Python
<100 ms ▏ 2018, Day 08, Part 2, Python
<100 ms ▏ 2018, Day 10, Parts 1+2, Python
<100 ms ▏ 2018, Day 12, Part 1, Python
<100 ms ▏ 2018, Day 12, Part 2, Python
<100 ms ▏ 2018, Day 13, Part 1, Python
<100 ms ▏ 2018, Day 16, Part 1, Python
<100 ms ▏ 2018, Day 16, Part 2, Python
<100 ms ▏ 2018, Day 18, Part 1, Python
<100 ms ▏ 2018, Day 21, Part 1, Python (host computation)
<100 ms ▏ 2018, Day 21, Part 2, Python (host computation)
<100 ms ▏ 2018, Day 22, Part 1, Python
<100 ms ▏ 2018, Day 23, Part 1, Python
<100 ms ▏ 2019, Day 01, Part 1, Python
<100 ms ▏ 2019, Day 01, Part 2, Python
<100 ms ▏ 2019, Day 02, Part 1, Python
<100 ms ▏ 2019, Day 05, Part 1, Python
<100 ms ▏ 2019, Day 05, Part 2, Python
<100 ms ▏ 2019, Day 06, Part 1, Python
<100 ms ▏ 2019, Day 06, Part 2, Python
<100 ms ▏ 2019, Day 08, Part 1, Python
<100 ms ▏ 2019, Day 08, Part 2, Python
<100 ms ▏ 2019, Day 09, Part 1, Python
<100 ms ▏ 2019, Day 12, Part 1, Python
<100 ms ▏ 2019, Day 14, Part 1, Python
<100 ms ▏ 2019, Day 14, Part 2, Python
<100 ms ▏ 2019, Day 20, Part 1, Python
<100 ms ▏ 2019, Day 22, Part 1, Python (single card tracing)
<100 ms ▏ 2019, Day 22, Part 2, Python (reverse construction)
<100 ms ▏ 2019, Day 22, Part 2, Python (forward construction)
<100 ms ▏ 2019, Day 24, Part 1, Python
<100 ms ▏ 2020, Day 01, Part 1, Python
<100 ms ▏ 2020, Day 02, Part 1, Python
<100 ms ▏ 2020, Day 02, Part 2, Python
<100 ms ▏ 2020, Day 03, Part 1, Python
<100 ms ▏ 2020, Day 03, Part 2, Python
<100 ms ▏ 2020, Day 04, Part 1, Python
<100 ms ▏ 2020, Day 04, Part 2, Python
<100 ms ▏ 2020, Day 05, Part 1, Python
<100 ms ▏ 2020, Day 05, Part 2, Python
<100 ms ▏ 2020, Day 06, Part 1, Python
<100 ms ▏ 2020, Day 06, Part 2, Python
<100 ms ▏ 2020, Day 07, Part 1, Python
<100 ms ▏ 2020, Day 07, Part 2, Python
<100 ms ▏ 2020, Day 08, Part 1, Python
<100 ms ▏ 2020, Day 08, Part 2, Python
<100 ms ▏ 2020, Day 10, Part 1, Python
<100 ms ▏ 2020, Day 10, Part 2, Python
<100 ms ▏ 2020, Day 12, Part 1, Python
<100 ms ▏ 2020, Day 12, Part 2, Python
<100 ms ▏ 2020, Day 13, Part 1, Python
<100 ms ▏ 2020, Day 13, Part 2, Python
<100 ms ▏ 2020, Day 14, Part 1, Python
<100 ms ▏ 2020, Day 15, Part 1, Python
<100 ms ▏ 2020, Day 16, Part 1, Python
<100 ms ▏ 2020, Day 16, Part 2, Python
<100 ms ▏ 2020, Day 17, Part 1, Python
<100 ms ▏ 2020, Day 18, Part 1, Python
<100 ms ▏ 2020, Day 18, Part 2, Python (manual parsing)
<100 ms ▏ 2020, Day 18, Part 2, Python (eval hack)
<100 ms ▏ 2020, Day 19, Part 1, Python
<100 ms ▏ 2020, Day 20, Part 1, Python
<100 ms ▏ 2020, Day 21, Parts 1+2, Python
<100 ms ▏ 2020, Day 22, Part 1, Python
<100 ms ▏ 2020, Day 23, Part 1, Python
<100 ms ▏ 2020, Day 24, Part 1, Python
<100 ms ▏ 2021, Day 01, Part 1, Python
<100 ms ▏ 2021, Day 01, Part 2, Python
<100 ms ▏ 2021, Day 02, Part 1, Python (using complex numbers)
<100 ms ▏ 2021, Day 02, Part 1, Python (using separate components)
<100 ms ▏ 2021, Day 02, Part 2, Python
<100 ms ▏ 2021, Day 03, Part 1, Python
<100 ms ▏ 2021, Day 03, Part 2, Python
<100 ms ▏ 2021, Day 04, Part 1, Python
<100 ms ▏ 2021, Day 04, Part 2, Python
<100 ms ▏ 2021, Day 05, Part 1, Python (coordinate list)
<100 ms ▏ 2021, Day 06, Part 1, Python
<100 ms ▏ 2021, Day 06, Part 2, Python
<100 ms ▏ 2021, Day 08, Part 1, Python
<100 ms ▏ 2021, Day 08, Part 2, Python
<100 ms ▏ 2021, Day 09, Part 1, Python
<100 ms ▏ 2021, Day 09, Part 2, Python (using low point seeds)
<100 ms ▏ 2021, Day 10, Part 1, Python
<100 ms ▏ 2021, Day 10, Part 2, Python
<100 ms ▏ 2021, Day 11, Part 1, Python
<100 ms ▏ 2021, Day 11, Part 2, Python
<100 ms ▏ 2021, Day 12, Part 1, Python
<100 ms ▏ 2021, Day 13, Part 1, Python
<100 ms ▏ 2021, Day 13, Part 2, Python
<100 ms ▏ 2021, Day 14, Part 1, Python
<100 ms ▏ 2021, Day 14, Part 2, Python
<100 ms ▏ 2021, Day 15, Part 1, Python
<100 ms ▏ 2021, Day 16, Part 1, Python
<100 ms ▏ 2021, Day 16, Part 2, Python
<100 ms ▏ 2021, Day 20, Part 1, Python
<100 ms ▏ 2021, Day 21, Part 1, Python
<100 ms ▏ 2022, Day 01, Part 1, Python
<100 ms ▏ 2022, Day 01, Part 2, Python
<100 ms ▏ 2022, Day 02, Part 1, Python
<100 ms ▏ 2022, Day 02, Part 2, Python
<100 ms ▏ 2022, Day 03, Part 1, Python
<100 ms ▏ 2022, Day 03, Part 2, Python
<100 ms ▏ 2022, Day 04, Part 1, Python
<100 ms ▏ 2022, Day 04, Part 2, Python
<100 ms ▏ 2022, Day 05, Part 1, Python
<100 ms ▏ 2022, Day 05, Part 2, Python
<100 ms ▏ 2022, Day 06, Part 1, Python
<100 ms ▏ 2022, Day 06, Part 2, Python
<100 ms ▏ 2022, Day 07, Parts 1+2, Python
<100 ms ▏ 2022, Day 08, Part 1, Python
<100 ms ▏ 2022, Day 08, Part 2, Python
<100 ms ▏ 2022, Day 09, Part 1, Python (coordinate tuples)
<100 ms ▏ 2022, Day 09, Part 2, Python (coordinate tuples)
<100 ms ▏ 2022, Day 09, Part 1, Python (complex numbers)
<100 ms ▏ 2022, Day 10, Part 1, Python
<100 ms ▏ 2022, Day 10, Part 2, Python
<100 ms ▏ 2022, Day 11, Part 1, Python
<100 ms ▏ 2022, Day 12, Parts 1+2, Python
<100 ms ▏ 2022, Day 13, Part 1, Python
<100 ms ▏ 2022, Day 13, Part 2, Python (with proper parsing and comparison)
<100 ms ▏ 2022, Day 13, Part 2, Python (shortcut, list-based)
<100 ms ▏ 2022, Day 13, Part 2, Python (shortcut, string-based)
<100 ms ▏ 2022, Day 14, Part 1, Python (complex numbers)
<100 ms ▏ 2022, Day 14, Part 1, Python (coordinate tuples)
<100 ms ▏ 2022, Day 14, Part 2, Python (sweep approach)
<100 ms ▏ 2022, Day 17, Part 1, Python
<100 ms ▏ 2022, Day 18, Part 1, Python
<100 ms ▏ 2022, Day 20, Part 1, Python (order table)
<100 ms ▏ 2022, Day 21, Part 1, Python
<100 ms ▏ 2022, Day 21, Part 2, Python (equation inversion)
<100 ms ▏ 2022, Day 21, Parts 1+2, Python (equation inversion)
<100 ms ▏ 2022, Day 21, Part 2, Python (linear solver)
<100 ms ▏ 2022, Day 21, Parts 1+2, Python (linear solver)
<100 ms ▏ 2022, Day 22, Part 1, Python
<100 ms ▏ 2022, Day 22, Part 2, Python (hard-coded portals)
<100 ms ▏ 2022, Day 25, Part 1, Python (with conversions)
<100 ms ▏ 2022, Day 25, Part 1, Python (direct addition)
<100 ms ▏ 2023, Day 01, Part 1, Python
<100 ms ▏ 2023, Day 01, Part 2, Python
<100 ms ▏ 2023, Day 02, Part 1, Python
<100 ms ▏ 2023, Day 02, Part 2, Python
<100 ms ▏ 2023, Day 03, Part 1, Python (complex number dictionary)
<100 ms ▏ 2023, Day 03, Part 2, Python (complex number dictionary)
<100 ms ▏ 2023, Day 04, Part 1, Python
<100 ms ▏ 2023, Day 04, Part 2, Python
<100 ms ▏ 2023, Day 05, Part 1, Python
<100 ms ▏ 2023, Day 05, Part 2, Python (interval processing)
<100 ms ▏ 2023, Day 06, Part 1, Python
<100 ms ▏ 2023, Day 06, Part 2, Python (quadratic equation solving)
<100 ms ▏ 2023, Day 07, Part 1, Python
<100 ms ▏ 2023, Day 07, Part 2, Python
<100 ms ▏ 2023, Day 08, Part 1, Python
<100 ms ▏ 2023, Day 08, Part 2, Python
<100 ms ▏ 2023, Day 09, Part 1, Python
<100 ms ▏ 2023, Day 09, Part 2, Python
<100 ms ▏ 2023, Day 10, Part 1, Python
<100 ms ▏ 2023, Day 10, Part 2, Python (shoelace/Pick)
<100 ms ▏ 2023, Day 11, Part 1, Python (duplicating rows and columns)
<100 ms ▏ 2023, Day 11, Part 1, Python (coordinate translation)
<100 ms ▏ 2023, Day 11, Part 2, Python (coordinate translation)
<100 ms ▏ 2023, Day 13, Part 1, Python
<100 ms ▏ 2023, Day 13, Part 2, Python
<100 ms ▏ 2023, Day 14, Part 1, Python (coordinate tuples)
<100 ms ▏ 2023, Day 14, Part 1, Python (complex numbers)
<100 ms ▏ 2023, Day 14, Part 1, Python (string processing)
<100 ms ▏ 2023, Day 15, Part 1, Python
<100 ms ▏ 2023, Day 15, Part 2, Python
<100 ms ▏ 2023, Day 16, Part 1, Python
<100 ms ▏ 2023, Day 18, Part 1, Python (shoelace/Pick)
<100 ms ▏ 2023, Day 18, Part 2, Python (shoelace/Pick)
<100 ms ▏ 2023, Day 19, Part 1, Python
<100 ms ▏ 2023, Day 19, Part 2, Python
<100 ms ▏ 2023, Day 20, Part 2, Python (input graph parsing)
<100 ms ▏ 2023, Day 21, Part 1, Python
<100 ms ▏ 2023, Day 24, Part 2, Python (single hailstone triple)
<100 ms ▏ 2023, Day 24, Part 2, Python (better numerical stability)
<100 ms ▏ 2024, Day 01, Part 1, Python
<100 ms ▏ 2024, Day 01, Part 2, Python
<100 ms ▏ 2024, Day 02, Part 1, Python
<100 ms ▏ 2024, Day 02, Part 2, Python
<100 ms ▏ 2024, Day 03, Part 1, Python
<100 ms ▏ 2024, Day 03, Part 2, Python
<100 ms ▏ 2024, Day 04, Part 2, Python
<100 ms ▏ 2024, Day 06, Part 1, Python
<100 ms ▏ 2024, Day 08, Part 1, Python
<100 ms ▏ 2024, Day 08, Part 2, Python
<100 ms ▏ 2024, Day 09, Part 1, Python
<100 ms ▏ 2024, Day 09, Part 2, Python (speed-optimized)
<100 ms ▏ 2024, Day 10, Part 1, Python
<100 ms ▏ 2024, Day 10, Part 2, Python
<100 ms ▏ 2024, Day 13, Part 2, Python
<100 ms ▏ 2024, Day 14, Part 1, Python
<100 ms ▏ 2024, Day 14, Part 2, Python (Independent Axis Minimum Variance)
<100 ms ▏ 2024, Day 17, Part 1, Python
<100 ms ▏ 2024, Day 17, Part 2, Python (puzzle input specific)
<100 ms ▏ 2024, Day 17, Part 2, Python (generic)
<100 ms ▏ 2024, Day 18, Part 1, Python
<100 ms ▏ 2024, Day 18, Part 2, Python (binary search)
<100 ms ▏ 2024, Day 19, Part 1, Python
<100 ms ▏ 2024, Day 21, Part 1, Python
<100 ms ▏ 2024, Day 21, Part 2, Python
<100 ms ▏ 2024, Day 23, Part 1, Python
<100 ms ▏ 2024, Day 23, Part 2, Python
<100 ms ▏ 2024, Day 24, Part 1, Python
<100 ms ▏ 2024, Day 24, Part 2, Python
<100 ms ▏ 2025, Day 01, Part 1, Python
<100 ms ▏ 2025, Day 03, Part 2, Python (greedy algorithm)
<100 ms ▏ 2025, Day 04, Part 1, Python
<100 ms ▏ 2025, Day 05, Part 1, Python
<100 ms ▏ 2025, Day 05, Part 2, Python
<100 ms ▏ 2025, Day 06, Part 1, Python (using eval)
<100 ms ▏ 2025, Day 06, Part 1, Python (safe)
<100 ms ▏ 2025, Day 06, Part 2, Python (using eval)
<100 ms ▏ 2025, Day 06, Part 2, Python (safe)
<100 ms ▏ 2025, Day 07, Part 1, Python
<100 ms ▏ 2025, Day 07, Part 2, Python (dictionary)
<100 ms ▏ 2025, Day 07, Part 2, Python (list)
<100 ms ▏ 2025, Day 09, Part 1, Python
<100 ms ▏ 2025, Day 11, Part 1, Python
<100 ms ▏ 2025, Day 11, Part 2, Python (tagging)
<100 ms ▏ 2025, Day 11, Part 2, Python (partial paths)
<100 ms ▏ 2025, Day 12, Part 1, Python