Benchmarks are done using criterion. The solvers always provide a solution to both parts of the day's puzzle in one go, and receive the input as an in-memory string or bytes (depending on what I preferred for that day).
Emojis reflect my feeling on the time and if it's improvable, based on intuition or other people's submissions.
Time precision depends on the variance measured during the benchmarks.
Hardware: MacBook Air (13-inch, 2020), Apple M1
Day | Name | Time | Feeling |
---|---|---|---|
01 | Trebuchet?! | 34 μs | 🙂 |
02 | Cube Conundrum | 22.6 μs | 😎 |
03 | Gear Ratios | 52 μs | 🙂 |
04 | Scratchcards | 7.6 μs | 😎 |
05 | If You Give A Seed A Fertilizer | 17.9 μs | 🙂 |
06 | Wait For It | 161 ns | 😎 |
07 | Camel Cards | 42 μs | 😎 |
08 | |||
09 | Mirage Maintenance | 43.7 μs | 🙂 |
10 | Pipe Maze | 44 μs | 😎 |
11 | Cosmic Expansion | 9.5 μs | 🌈 |
12 | Hot Springs | 22.4 ms | 🤔 |
13 | Point of Incidence | 39 μs | 😎 |
14 | Parabolic Reflector Dish | 20.9 ms | 😕 |
15 | Lens Library | 65 µs | 🙂 |
16 | The Floor Will Be Lava | 38.9 ms | 😕 |
17 | Clumsy Crucible | 38.3 ms | 😕 |
18 | Lavaduct Lagoon | 7.2 µs | 🌈 |
19 | Aplenty | 82 µs | 🙂 |
20 | Pulse Propagation | 9.4ms1 | 😕 |
21 | |||
22 | Sand Slabs | 10.9 ms | 🤔 |
Hardware: MacBook Pro (14-inch, 2021), Apple M1 Pro
Day | Name | Time | Feeling |
---|---|---|---|
01 | Energy Counting | 21.8 μs | 🙂 |
02 | Rock Paper Scissors | 3.67 μs | 😎 |
03 | Rucksack Reorganization | 7.7 μs | 😎 |
04 | Camp Cleanup | 34.1 μs | 🙂 |
05 | Supply Stacks | 15.8 μs | 😎 |
06 | Tuning Trouble | 5.9 μs | 😎 |
07 | No Space Left On Device | 18.2 μs | 😎 |
08 | Treetop Tree House | 210 μs | 🤔 |
09 | Rope Bridge | 241 μs | 🙂 |
10 | Cathode Ray Tube | 1.5 μs | 😎 |
11 | Monkey in the Middle | 2.0 ms | 😕 |
12 | Hill Climbing Algorithm | ~20 min2 | 😛 |
13 | Distress Signal | 392 μs | 😕 |
14 | Regolith Reservoir | 133 µs | 🙂 |
15 | Beacon Exclusion Zone | 4.28 µs | 😎 |
Hardware: MacBook Pro (13-inch, 2019), 2.8 GHz Quad-Core Intel Core i7
(Day 15 and 19, yikes…)
Day | Name | Time | Feeling |
---|---|---|---|
01 | Sonar Sweep | 82 μs | 😎 |
02 | Dive! | 277 μs | 😎 |
03 | Binary Diagnostic | 1.3 ms | 🤨 |
04 | Giant Squid | 6.2 ms | 😖 |
05 | Hydrothermal Venture | 7.5 ms | 😖 |
06 | Lanternfish | 4.9 μs | 😎 |
07 | The Treachery of Whales | 3.25 ms | 😖 |
08 | Seven Segment Search | 1.2 ms | 🤨 |
09 | Smoke Basin | 850 μs | 😎 |
10 | Syntax Scoring | 95 μs | 😎 |
11 | Dumbo Octopμs | 1.69 ms | 🤨 |
12 | Passage Pathing | 44 μs | 😎 |
13 | Transparent Origami | 155 μs | 😎 |
14 | Extended Polymerization | 30 μs | 😎 |
15 | Chiton | 1.9 s | 😭 |
16 | Packet Decoder | 35 μs | 😎 |
17 | Trick Shot | 11 μs | 😎 |
18 | Snailfish | 41 ms | 🤨 |
19 | Beacon Scanner | 4.5 s | 😭 |
20 | Trench Map | 10.2 ms | 😎 |
21 | Dirac Dice | 4.1 ms | 🤨 |
Footnotes
-
This is the time when taking into account some assumptions about how the input is crafted, as the problem gets significantly more complex otherwise. The code is currently assuring that these assumptions hold true (for a big runtime toll), but I'll likely remove these checks if I go back to optimise it. ↩
-
via BFS, as in Big Friendly Sharpie ↩