This crate uses cargo-aoc for automating the boilerplate.
For each challenge, at least 2 unit tests exist asserting that parts 1 and 2 are correct (after manually verifying the answers on the website). These serve as regression tests in case I touch up some previous days (for instance, to reduce duplication with later days)
To run the current day, use
cargo aoc
To benchmark the current day, use
cargo aoc bench
To run a specific day (e.g day 1), use
cargo aoc -d1
To run a specific day and part (e.g day 1, part 2), use
cargo aoc -d1 -p2
To run all solutions, use
cargo run --release
To run all unit tests, use
cargo test --release
To download the input for today, run
cargo aoc input
To download the input for a previous day X, run
cargo aoc input -dX
Code the generator to parse this day's input and the solutions to each part in src/dayX.rs
.
Make your solution visible at the top level by adding pub mod dayX
in src/lib.rs
.
If the session id expire, log in to the advent of code website, and obtain the cookie id (In Chrome: Shift+F9, Cookies tab, and copy the "Value" for the "session" field). Then run
cargo aoc credentials -s <session id>
Note: this is annecdotal. Benchmarks can be run on the faster ones for more precise data. These were run on a 5 years old chromebook with a processor clocked at 2.4 GHz.
Day 1 - Part 1: 719796
generator: 36.446µs,
runner: 568ns
Day 1 - Part 2: 144554112
generator: 14.457µs,
runner: 2.606µs
Day 2 - Part 1: 517
generator: 270.42µs,
runner: 25.687µs
Day 2 - Part 2: 284
generator: 226.291µs,
runner: 37.349µs
Day 3 - Part 1: 195
generator: 76.209µs,
runner: 4.545µs
Day 3 - Part 2: 3772314000
generator: 65.81µs,
runner: 15.273µs
Day 4 - Part 1: 206
generator: 558.66µs,
runner: 4.783µs
Day 4 - Part 2: 123
generator: 440.516µs,
runner: 47.062µs
Day 5 - Part 1: 813
generator: 157.209µs,
runner: 583ns
Day 5 - Part 2: 612
generator: 126.053µs,
runner: 32.704µs
Day 6 - Part 1: 6686
generator: 226.232µs,
runner: 673.443µs
Day 6 - Part 2: 3476
generator: 184.485µs,
runner: 624.339µs
Day 7 - Part 1: 222
generator: 837.783µs,
runner: 529.499µs
Day 7 - Part 2: 13264
generator: 831.036µs,
runner: 1.404µs
Day 8 - Part 1: 1487
generator: 57.969µs,
runner: 1.766µs
Day 8 - Part 2: 1607
generator: 62.443µs,
runner: 109.154µs
Day 9 - Part 1: 373803594
generator: 46.005µs,
runner: 116.334µs
Day 9 - Part 2: 51152360
generator: 36.322µs,
runner: 110.968µs
Day 10 - Part 1: 3034
generator: 4.678µs,
runner: 4.554µs
Day 10 - Part 2: 259172170858496
generator: 3.505µs,
runner: 8.15µs
Day 11 - Part 1: 2427
generator: 143ns,
runner: 10.147305ms
Day 11 - Part 2: 2199
generator: 312ns,
runner: 14.080139ms
Day 12 - Part 1: 1457
generator: 350ns,
runner: 52.444µs
Day 12 - Part 2: 106860
generator: 229ns,
runner: 49.864µs
Day 13 - Part 1: 119
generator: 12.57µs,
runner: 768ns
Day 13 - Part 2: 1106724616194525
generator: 6.57µs,
runner: 43.471µs
Day 14 - Part 1: 7440382076205
generator: 363.45µs,
runner: 23.939µs
Day 14 - Part 2: 4200656704538
generator: 359.083µs,
runner: 10.843888ms
Day 15 - Part 1 : 1238
generator: 241ns,
runner: 15.434µs
Day 15 - Part 2 : 3745954
generator: 231ns,
runner: 785.663929ms
Day 16 - Part 1: 27850
generator: 405ns,
runner: 382.461µs
Day 16 - Part 2: 491924517533
generator: 274ns,
runner: 26.654402ms
Day 17 - Part 1: 273
generator: 653ns,
runner: 8.655878ms
Day 17 - Part 2: 1504
generator: 626ns,
runner: 214.516751ms
Day 18 - Part 1: 6923486965641
generator: 238ns,
runner: 581.833µs
Day 18 - Part 2: 70722650566361
generator: 160ns,
runner: 546.503µs
Day 19 - Part 1: 118
generator: 253.549µs,
runner: 1.098873ms
Day 19 - Part 2: 246
generator: 257.228µs,
runner: 3.522324ms
Day 20 - Part 1 : 140656720229539
generator: 403.453µs,
runner: 177.039µs
Day 20 - Part 2 : 1885
generator: 364.508µs,
runner: 332.848µs
Day 21 - Part 1: 2150
generator: 1.259011ms,
runner: 17.124µs
Day 21 - Part 2: vpzxk,bkgmcsx,qfzv,tjtgbf,rjdqt,hbnf,jspkl,hdcj
generator: 1.244023ms,
runner: 18.146µs
Day 22 - Part 1 : 32856
generator: 5.064µs,
runner: 26.329µs
Day 22 - Part 2 : 33805
generator: 4.481µs,
runner: 69.888044ms
Day 23 - Part 1 : 25468379
generator: 223ns,
runner: 3.971µs
Day 23 - Part 2 : 474747880250
generator: 156ns,
runner: 734.322459ms
Day 24 - Part 1 : 549
generator: 291.079µs,
runner: 404ns
Day 24 - Part 2 : 4147
generator: 270.699µs,
runner: 213.81922ms
Day 25 - Part 1 : 17980581
generator: 2.381µs,
runner: 34.356906ms