Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fa-sharp/advent-of-code-2023
https://github.com/fa-sharp/advent-of-code-2023
Last synced: 5 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/fa-sharp/advent-of-code-2023
- Owner: fa-sharp
- License: mit
- Created: 2023-12-02T04:34:38.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-12-03T23:54:27.000Z (about 1 year ago)
- Last Synced: 2023-12-04T09:28:39.214Z (about 1 year ago)
- Language: Rust
- Size: 143 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🎄 Advent of Code 2023
Solutions for [Advent of Code](https://adventofcode.com/) in [Rust](https://www.rust-lang.org/).
(Thanks to fspoettel for [this template repository](https://github.com/fspoettel/advent-of-code-rust) on GitHub!)
## 2023 Results
| Day | Part 1 | Part 2 |
| :---: | :---: | :---: |
| [Day 1](https://adventofcode.com/2023/day/1) | ⭐ | ⭐ |
| [Day 2](https://adventofcode.com/2023/day/2) | ⭐ | ⭐ |
| [Day 3](https://adventofcode.com/2023/day/3) | ⭐ | ⭐ |
| [Day 4](https://adventofcode.com/2023/day/4) | ⭐ | ⭐ |## Benchmarks
| Day | Part 1 | Part 2 |
| :---: | :---: | :---: |
| [Day 1](./src/bin/01.rs) | `98.3µs` | `3.7ms` |
| [Day 2](./src/bin/02.rs) | `97.3µs` | `98.4µs` |
| [Day 3](./src/bin/03.rs) | `120.3ms` | `123.8ms` |**Total: 248.09ms**
---
## Template setup
This template supports all major OS (macOS, Linux, Windows).
### Create your repository 📝
1. Open [the template repository](https://github.com/fspoettel/advent-of-code-rust) on Github.
2. Click [Use this template](https://github.com/fspoettel/advent-of-code-rust/generate) and create your repository.
3. Clone your repository to your computer.
4. If you are solving a previous year's advent of code, change the `AOC_YEAR` variable in `.cargo/config.toml` to reflect the year you are solving.### Setup rust 💻
1. Install the [Rust toolchain](https://www.rust-lang.org/tools/install).
2. (recommended) Install the [rust-analyzer](https://rust-analyzer.github.io/manual.html) extension for your code editor.
3. (optional) Install a native debugger. If you are using VS Code, [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb) is a good option.---
✨ You can start solving puzzles now! Head to the [Usage section](#usage) to see how to use this template. If you like, you can configure [some optional features](#optional-template-features).
## Usage
### Scaffold a day
```sh
# example: `cargo scaffold 1`
cargo scaffold# output:
# Created module file "src/bin/01.rs"
# Created empty input file "data/inputs/01.txt"
# Created empty example file "data/examples/01.txt"
# ---
# 🎄 Type `cargo solve 01` to run your solution.
```Individual solutions live in the `./src/bin/` directory as separate binaries. _Inputs_ and _examples_ live in the the `./data` directory.
Every [solution](https://github.com/fspoettel/advent-of-code-rust/blob/main/src/template/commands/scaffold.rs#L9-L35) has _tests_ referencing its _example_ file in `./data/examples`. Use these tests to develop and debug your solutions against the example input.
> [!TIP]
> If a day has different example inputs for both parts, you can use the `read_file_part()` helper in your tests instead of `read_file()`. For example, if this applies to day 1, you can create a second example file `01-2.txt` and invoke the helper like `let result = part_two(&advent_of_code::template::read_file_part("examples", DAY, 2));` to read it in `test_part_two`.> [!TIP]
> when editing a solution, `rust-analyzer` will display buttons for running / debugging unit tests above the unit test blocks.