advent-of-code-2020
advent-of-code-2020 copied to clipboard
:christmas_tree: My Advent of Code solutions in Rust. http://adventofcode.com/2020
Advent of Code 2020 in Rust
My Advent of Code 2020 solutions in the Rust programming language. This repository holds a separate Rust project for each day and part.
This year I attempt to develop a standalone, short, compact and fast solution for each problem (day part).
I've written an article about my solutions here: https://timvisee.com/blog/solving-aoc-2020-in-under-a-second/
Timings
Here is how long each solution takes to run to completion.
All solutions are measured (non scientifically) with hyperfine on
a i5-4670k @ 3.8Ghz machine running Linux.
Timings include binary loading, execution, input and output timings.

| part A | part B | |
|---|---|---|
| day 1 | 0.170ms |
0.007ms |
| day 2 | 0.553ms |
0.069ms |
| day 3 | 0.009ms |
0.013ms |
| day 4 | 0.157ms |
0.185ms |
| day 5 | 0.004ms |
0.011ms |
| day 6 | 0.031ms |
0.056ms |
| day 7 | 0.002ms |
1.71 ms |
| day 8 | 0.022ms |
0.131ms |
| day 9 | 0.043ms |
0.025ms |
| day 10 | 0.004ms |
0.005ms |
| day 11 | 0.007ms |
6.56 ms |
| day 12 | 0.011ms |
0.011ms |
| day 13 | 0.002ms |
0.004ms |
| day 14 | 0.276ms |
6.10 ms |
| day 15 | 0.227ms |
511 ms |
| day 16 | 0.209ms |
0.526ms |
| day 17 | 0.357ms |
7.98 ms |
| day 18 | 0.246ms |
0.228ms |
| day 19 | 0.364ms |
0.523ms |
| day 20 | 0.111ms |
0.460ms |
| day 21 | 0.464ms |
0.293ms |
| day 22 | 0.003ms |
3.42 ms |
| day 23 | 0.005ms |
192 ms |
| day 24 | 0.105ms |
43.2 ms |
| day 25 | 27.9 ms |
| one-by-one | parallel | |
|---|---|---|
| everything | 699ms |
511ms |
Run solutions
Each Rust project contains a input.txt file, holding the puzzle input. Simply
run the project to see the solution appear.
# One solution requires large stack size, set to allow unlimited size
ulimit -s unlimited
# Switch to day 1a, and run it
cd day01a
cargo run --release
# Or run everything in parallel
cd ../runner
cargo run --release --bin runner-par
# Or benchmark every day
cd ../runner
cargo run --release --bin bench
Some solutions might require Rust Nightly.
Other years
License
This project is released under the GNU GPL-3.0 license. Check out the LICENSE file for more information.