UNPKG

expeditaet

Version:
414 lines (337 loc) 24.8 kB
# Advent of Code Rust Solutions ## [2023](https://adventofcode.com/2023/) [![2023 Rust Progress](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AlexAegis/advent-of-code/master/.github/badges/rust/2023.json)](/solutions/rust/2023/) <!-- markdownlint-disable MD013 --> | Day | Part One | Part Two | | ------ | -------- | -------- | | Day 1 | - | - | | Day 2 | - | - | | Day 3 | - | - | | Day 4 | - | - | | Day 5 | - | - | | Day 6 | - | - | | Day 7 | - | - | | Day 8 | - | - | | Day 9 | - | - | | Day 10 | - | - | | Day 11 | - | - | | Day 12 | - | - | | Day 13 | - | - | | Day 14 | - | - | | Day 15 | - | - | | Day 16 | - | - | | Day 17 | - | - | | Day 18 | - | - | | Day 19 | - | - | | Day 20 | - | - | | Day 21 | - | - | | Day 22 | - | - | | Day 23 | - | - | | Day 24 | - | - | | Day 25 | - | - | <!-- markdownlint-enable MD013 --> ## [2022](https://adventofcode.com/2022/) [![2022 Rust Progress](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AlexAegis/advent-of-code/master/.github/badges/rust/2022.json)](/solutions/rust/2022/) <!-- markdownlint-disable MD013 --> | Day | Part One | Part Two | | ------ | -------- | -------- | | Day 1 | - | - | | Day 2 | - | - | | Day 3 | - | - | | Day 4 | - | - | | Day 5 | - | - | | Day 6 | - | - | | Day 7 | - | - | | Day 8 | - | - | | Day 9 | - | - | | Day 10 | - | - | | Day 11 | - | - | | Day 12 | - | - | | Day 13 | - | - | | Day 14 | - | - | | Day 15 | - | - | | Day 16 | - | - | | Day 17 | - | - | | Day 18 | - | - | | Day 19 | - | - | | Day 20 | - | - | | Day 21 | - | - | | Day 22 | - | - | | Day 23 | - | - | | Day 24 | - | - | | Day 25 | - | - | <!-- markdownlint-enable MD013 --> ## [2021](https://adventofcode.com/2021/) [![2021 Rust Progress](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AlexAegis/advent-of-code/master/.github/badges/rust/2021.json)](/solutions/rust/2021/) <!-- markdownlint-disable MD013 --> | Day | Part One | Part Two | | ------ | -------- | -------- | | Day 1 | - | - | | Day 2 | - | - | | Day 3 | - | - | | Day 4 | - | - | | Day 5 | - | - | | Day 6 | - | - | | Day 7 | - | - | | Day 8 | - | - | | Day 9 | - | - | | Day 10 | - | - | | Day 11 | - | - | | Day 12 | - | - | | Day 13 | - | - | | Day 14 | - | - | | Day 15 | - | - | | Day 16 | - | - | | Day 17 | - | - | | Day 18 | - | - | | Day 19 | - | - | | Day 20 | - | - | | Day 21 | - | - | | Day 22 | - | - | | Day 23 | - | - | | Day 24 | - | - | | Day 25 | - | - | <!-- markdownlint-enable MD013 --> ## [2020](https://adventofcode.com/2020/) [![2020 Rust Progress](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AlexAegis/advent-of-code/master/.github/badges/rust/2020.json)](/solutions/rust/2020/) <!-- markdownlint-disable MD013 --> | Day | Part One | Part Two | | ---------------------------------- | -------- | -------- | | [Day 1](/solutions/rust/2020/01/) | - | - | | [Day 2](/solutions/rust/2020/02/) | - | - | | [Day 3](/solutions/rust/2020/03/) | - | - | | [Day 4](/solutions/rust/2020/04/) | - | - | | [Day 5](/solutions/rust/2020/05/) | - | - | | [Day 6](/solutions/rust/2020/06/) | - | - | | [Day 7](/solutions/rust/2020/07/) | - | - | | [Day 8](/solutions/rust/2020/08/) | - | - | | [Day 9](/solutions/rust/2020/09/) | - | - | | [Day 10](/solutions/rust/2020/10/) | - | - | | [Day 11](/solutions/rust/2020/11/) | - | - | | [Day 12](/solutions/rust/2020/12/) | - | - | | [Day 13](/solutions/rust/2020/13/) | - | - | | [Day 14](/solutions/rust/2020/14/) | - | - | | [Day 15](/solutions/rust/2020/15/) | - | - | | [Day 16](/solutions/rust/2020/16/) | - | - | | [Day 17](/solutions/rust/2020/17/) | - | - | | [Day 18](/solutions/rust/2020/18/) | - | - | | [Day 19](/solutions/rust/2020/19/) | - | - | | [Day 20](/solutions/rust/2020/20/) | - | - | | [Day 21](/solutions/rust/2020/21/) | - | - | | [Day 22](/solutions/rust/2020/22/) | - | - | | [Day 23](/solutions/rust/2020/23/) | - | - | | [Day 24](/solutions/rust/2020/24/) | - | - | | [Day 25](/solutions/rust/2020/25/) | - | - | <!-- markdownlint-enable MD013 --> ## [2019](https://adventofcode.com/2019/) [![2019 Rust Progress](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AlexAegis/advent-of-code/master/.github/badges/rust/2019.json)](/solutions/rust/2019/) <!-- markdownlint-disable MD013 --> | Day | Part One | Part Two | | ---------------------------------- | --------------------------------------------- | --------------------------------------------- | | [Day 1](/solutions/rust/2019/01/) | [1.6μs\*](/solutions/rust/2019/01/src/lib.rs) | [3.6μs\*](/solutions/rust/2019/01/src/lib.rs) | | [Day 2](/solutions/rust/2019/02/) | [2.2μs\*](/solutions/rust/2019/02/src/lib.rs) | [1ms\*](/solutions/rust/2019/02/src/lib.rs) | | [Day 3](/solutions/rust/2019/03/) | - | - | | [Day 4](/solutions/rust/2019/04/) | - | - | | [Day 5](/solutions/rust/2019/05/) | - | - | | [Day 6](/solutions/rust/2019/06/) | - | - | | [Day 7](/solutions/rust/2019/07/) | - | - | | [Day 8](/solutions/rust/2019/08/) | - | - | | [Day 9](/solutions/rust/2019/09/) | - | - | | [Day 10](/solutions/rust/2019/10/) | - | - | | [Day 11](/solutions/rust/2019/11/) | - | - | | [Day 12](/solutions/rust/2019/12/) | - | - | | [Day 13](/solutions/rust/2019/13/) | - | - | | [Day 14](/solutions/rust/2019/14/) | - | - | | [Day 15](/solutions/rust/2019/15/) | - | - | | [Day 16](/solutions/rust/2019/16/) | - | - | | [Day 17](/solutions/rust/2019/17/) | - | - | | [Day 18](/solutions/rust/2019/18/) | - | - | | [Day 19](/solutions/rust/2019/19/) | - | - | | [Day 20](/solutions/rust/2019/20/) | - | - | | [Day 21](/solutions/rust/2019/21/) | - | - | | [Day 22](/solutions/rust/2019/22/) | - | - | | [Day 23](/solutions/rust/2019/23/) | - | - | | [Day 24](/solutions/rust/2019/24/) | - | - | | Day 25 | - | - | <!-- markdownlint-enable MD013 --> ## [2018](https://adventofcode.com/2018/) [![2018 Rust Progress](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AlexAegis/advent-of-code/master/.github/badges/rust/2018.json)](/solutions/rust/2018/) <!-- markdownlint-disable MD013 --> | Day | Part One | Part Two | | ---------------------------------- | ------------------------------------------ | -------------------------------------------- | | [Day 1](/solutions/rust/2018/01/) | [13μs](/solutions/rust/2018/01/src/lib.rs) | [12.2μs](/solutions/rust/2018/01/src/lib.rs) | | [Day 2](/solutions/rust/2018/02/) | - | - | | [Day 3](/solutions/rust/2018/03/) | - | - | | [Day 4](/solutions/rust/2018/04/) | - | - | | [Day 5](/solutions/rust/2018/05/) | - | - | | [Day 6](/solutions/rust/2018/06/) | - | - | | [Day 7](/solutions/rust/2018/07/) | - | - | | [Day 8](/solutions/rust/2018/08/) | - | - | | [Day 9](/solutions/rust/2018/09/) | - | - | | [Day 10](/solutions/rust/2018/10/) | - | - | | [Day 11](/solutions/rust/2018/11/) | - | - | | [Day 12](/solutions/rust/2018/12/) | - | - | | [Day 13](/solutions/rust/2018/13/) | - | - | | [Day 14](/solutions/rust/2018/14/) | - | - | | [Day 15](/solutions/rust/2018/15/) | - | - | | Day 16 | - | - | | Day 17 | - | - | | Day 18 | - | - | | Day 19 | - | - | | Day 20 | - | - | | Day 21 | - | - | | Day 22 | - | - | | Day 23 | - | - | | Day 24 | - | - | | Day 25 | - | - | <!-- markdownlint-enable MD013 --> ## [2017](https://adventofcode.com/2017/) [![2017 Rust Progress](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AlexAegis/advent-of-code/master/.github/badges/rust/2017.json)](/solutions/typescript/2017/) <!-- markdownlint-disable MD013 --> | Day | Part One | Part Two | | --------------------------------- | -------------------------------------------- | -------------------------------------------- | | [Day 1](/solutions/rust/2017/01/) | [51μs\*](/solutions/rust/2017/01/src/lib.rs) | [59μs\*](/solutions/rust/2017/01/src/lib.rs) | | Day 2 | - | - | | Day 3 | - | - | | Day 4 | - | - | | Day 5 | - | - | | Day 6 | - | - | | Day 7 | - | - | | Day 8 | - | - | | Day 9 | - | - | | Day 10 | - | - | | Day 11 | - | - | | Day 12 | - | - | | Day 13 | - | - | | Day 14 | - | - | | Day 15 | - | - | | Day 16 | - | - | | Day 17 | - | - | | Day 18 | - | - | | Day 19 | - | - | | Day 20 | - | - | | Day 21 | - | - | | Day 22 | - | - | | Day 23 | - | - | | Day 24 | - | - | | Day 25 | - | - | ## [2016](https://adventofcode.com/2016/) [![2016 Rust Progress](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AlexAegis/advent-of-code/master/.github/badges/rust/2016.json)](/solutions/rust/2016/) <!-- markdownlint-disable MD013 --> | Day | Part One | Part Two | | --------------------------------- | -------- | -------- | | [Day 1](/solutions/rust/2016/01/) | - | - | | [Day 2](/solutions/rust/2016/02/) | - | - | | Day 3 | - | - | | Day 4 | - | - | | Day 5 | - | - | | Day 6 | - | - | | Day 7 | - | - | | Day 8 | - | - | | Day 9 | - | - | | Day 10 | - | - | | Day 11 | - | - | | Day 12 | - | - | | Day 13 | - | - | | Day 14 | - | - | | Day 15 | - | - | | Day 16 | - | - | | Day 17 | - | - | | Day 18 | - | - | | Day 19 | - | - | | Day 20 | - | - | | Day 21 | - | - | | Day 22 | - | - | | Day 23 | - | - | | Day 24 | - | - | | Day 25 | - | - | <!-- markdownlint-enable MD013 --> ## [2015](https://adventofcode.com/2015/) [![2015 Rust Progress](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AlexAegis/advent-of-code/master/.github/badges/rust/2015.json)](/solutions/rust/2015/) <!-- markdownlint-disable MD013 --> | Day | Part One | Part Two | | --------------------------------- | --------------------------------------------- | --------------------------------------------- | | [Day 1](/solutions/rust/2015/01/) | [6.2μs\*](/solutions/rust/2015/01/src/lib.rs) | [1.9μs\*](/solutions/rust/2015/01/src/lib.rs) | | [Day 2](/solutions/rust/2015/02/) | [194μs\*](/solutions/rust/2015/02/src/lib.rs) | [196μs\*](/solutions/rust/2015/02/src/lib.rs) | | [Day 3](/solutions/rust/2015/03/) | [231μs\*](/solutions/rust/2015/03/src/lib.rs) | [256μs\*](/solutions/rust/2015/03/src/lib.rs) | | [Day 4](/solutions/rust/2015/04/) | [506ms](/solutions/rust/2015/04/src/lib.rs) | [14s](/solutions/rust/2015/04/src/lib.rs) | | [Day 5](/solutions/rust/2015/05/) | [193μs](/solutions/rust/2015/05/src/lib.rs) | [4ms](/solutions/rust/2015/05/src/lib.rs) | | Day 6 | - | - | | Day 7 | - | - | | Day 8 | - | - | | Day 9 | - | - | | Day 10 | - | - | | Day 11 | - | - | | Day 12 | - | - | | Day 13 | - | - | | Day 14 | - | - | | Day 15 | - | - | | Day 16 | - | - | | Day 17 | - | - | | Day 18 | - | - | | Day 19 | - | - | | Day 20 | - | - | | Day 21 | - | - | | Day 22 | - | - | | Day 23 | - | - | | Day 24 | - | - | | Day 25 | - | - | <!-- markdownlint-enable MD013 --> ## Setup 1. Install [Rust](https://www.rust-lang.org/tools/install) 2. Open with [VS Code](https://code.visualstudio.com/) 3. Install the suggested extensions when prompted (Recommended) 4. Install the required crates ```sh cargo build ``` > Select `Current Rust Cargo` launch option. **F5** runs the cargo you're > focusing in debug mode. Set Rust to default to `nightly` ```sh rustup default nightly ``` ### Debug > Since CodeLLDB does not play well with cargo workspaces use the `Debug` or > `Run` codelense from the `rust-analyser` VS Code extension ### Running individual days ```sh cargo run -p aoc201601 ``` ### Testing Run in the cargo you'd like to test ```sh cargo test ``` Or in the workspace cargo if you'd like to run all tests ```sh cargo test --all ``` ### Benchmarking Run a specific days benchmark ```sh cargo bench -p aoc201501 ``` Or in the workspace cargo if you'd like to run all benchmarks (Takes a while!) ```sh cargo bench --all ``` ## Scaffolding ```sh cargo run -p scaffold 2016 01 ``` ## Requirements - OpenSSL dev libraries To install on Ubuntu: ```sh sudo apt install libssl-dev pkg-config ``` ## Notes Rustfmt's config file is symlinked to the repository root because the [rust-analyser extension can't pick it up otherwise.](https://github.com/rust-analyzer/rust-analyzer/issues/7227) The github action `actions-rs/cargo@v1` [cannot be run in a subdirectory either](https://github.com/actions-rs/cargo/issues/86) so `--manifest-path` has to be set for each step. The github action `actions-rs/audit-check@v1` is disabled because it too cannot be run in a subdirectory but additional argument cannot be passed [until this pr is merged](https://github.com/actions-rs/audit-check/pull/133). Until that, this step is done manually.