https://github.com/coletrammer/adventofcode
My solutions to Advent of Code
https://github.com/coletrammer/adventofcode
advent-of-code cpp rust
Last synced: 3 months ago
JSON representation
My solutions to Advent of Code
- Host: GitHub
- URL: https://github.com/coletrammer/adventofcode
- Owner: coletrammer
- License: mit
- Created: 2023-11-30T05:58:41.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-12-13T05:36:13.000Z (7 months ago)
- Last Synced: 2025-12-14T19:34:52.599Z (7 months ago)
- Topics: advent-of-code, cpp, rust
- Language: C++
- Homepage: https://adventofcode.com
- Size: 274 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Advent of Code Solutions
This repository contains my solutions to the [Advent of Code](https://adventofcode.com) challenges.
## Table of Solution Completion
| Year | Language | Number of Problems Solved | Score |
| ---- | -------- | ------------------------- | ----- |
| 2025 | C++ | 11/12 | N/A |
| 2024 | C++ | 25/25 | 0 |
| 2023 | C++ | 25/25 | 91 |
| 2022 | Rust | 25/25 | 0 |
| 2021 | Rust | 8/25 | 0 |
| 2020 | C++ | 3/25 | 0 |
| 2019 | C++ | 1/25 | 0 |
## Placement on Leaderboards
After 2024, there is no longer a global leaderboard.
### 2025
| Day | **Part A** | Time | **Part B** | Time |
| --- | ---------- | -------- | ---------- | -------- |
| 11 | | 00:05:12 | | 00:12:34 |
| 10 | | 00:17:07 | | >24h |
| 9 | | 00:03:43 | | 01:19:00 |
| 8 | | 00:30:29 | | 00:47:54 |
| 7 | | 04:47:54 | | 04:53:17 |
| 6 | | 00:02:39 | | 00:11:53 |
| 5 | | 00:06:01 | | 00:36:36 |
| 4 | | 00:02:57 | | 00:04:15 |
| 3 | | 00:02:59 | | 00:12:24 |
| 2 | | 00:05:28 | | 00:16:27 |
| 1 | | 00:04:36 | | 00:05:38 |
### 2024
| Day | **Part A** | Time | Rank | Score | **Part B** | Time | Rank | Score |
| --- | ---------- | -------- | ---- | ----- | ---------- | -------- | ---- | ----- |
| 25 | | 00:16:12 | 1730 | 0 | | 00:16:17 | 1402 | 0 |
| 24 | | 00:30:22 | 608 | 0 | | 02:40:29 | 1414 | 0 |
| 23 | | 00:06:38 | 608 | 0 | | 00:32:15 | 1400 | 0 |
| 22 | | 00:07:52 | 947 | 0 | | 00:30:15 | 835 | 0 |
| 21 | | 01:40:48 | 1202 | 0 | | 14:18:21 | 5789 | 0 |
| 20 | | 00:35:21 | 1755 | 0 | | 00:45:16 | 882 | 0 |
| 19 | | 00:11:33 | 1537 | 0 | | 00:12:31 | 901 | 0 |
| 18 | | 00:14:06 | 1400 | 0 | | 00:29:34 | 2323 | 0 |
| 17 | | 00:22:54 | 1329 | 0 | | 01:19:58 | 532 | 0 |
| 16 | | 00:12:34 | 669 | 0 | | 00:55:36 | 1590 | 0 |
| 15 | | 00:13:41 | 353 | 0 | | 01:12:24 | 1486 | 0 |
| 14 | | 00:24:05 | 2643 | 0 | | 00:39:10 | 1295 | 0 |
| 13 | | 00:26:49 | 2903 | 0 | | 00:41:12 | 1684 | 0 |
| 12 | | 00:07:14 | 424 | 0 | | 02:05:21 | 4382 | 0 |
| 11 | | 00:16:27 | 4492 | 0 | | 00:24:52 | 1853 | 0 |
| 10 | | 00:06:51 | 505 | 0 | | 00:07:22 | 289 | 0 |
| 9 | | 00:10:24 | 461 | 0 | | 00:21:50 | 262 | 0 |
| 8 | | 00:09:15 | 588 | 0 | | 00:17:19 | 918 | 0 |
| 7 | | 00:07:05 | 822 | 0 | | 00:09:59 | 736 | 0 |
| 6 | | 00:07:22 | 620 | 0 | | 00:20:07 | 741 | 0 |
| 5 | | 00:05:55 | 466 | 0 | | 00:12:17 | 564 | 0 |
| 4 | | 00:15:26 | 2955 | 0 | | 00:19:39 | 1648 | 0 |
| 3 | | 00:09:42 | 4020 | 0 | | 00:12:34 | 1687 | 0 |
| 2 | | 00:04:06 | 262 | 0 | | 00:06:26 | 261 | 0 |
| 1 | | 00:04:00 | 1348 | 0 | | 00:05:27 | 917 | 0 |
### 2023
| Day | **Part A** | Time | Rank | Score | **Part B** | Time | Rank | Score |
| --- | ---------- | -------- | ---- | ----- | ---------- | -------- | ----- | ----- |
| 25 | | 01:39:20 | 2154 | 0 | | 01:39:24 | 1825 | 0 |
| 24 | | 00:40:14 | 871 | 0 | | 03:53:52 | 1784 | 0 |
| 23 | | 00:06:13 | 25 | 76 | | 02:30:44 | 1810 | 0 |
| 22 | | 01:25:16 | 2029 | 0 | | 01:38:47 | 1630 | 0 |
| 21 | | 00:10:06 | 774 | 0 | | 20:06:45 | 7843 | 0 |
| 20 | | 00:47:15 | 850 | 0 | | 00:59:15 | 296 | 0 |
| 19 | | 00:21:30 | 840 | 0 | | 01:01:33 | 989 | 0 |
| 18 | | 00:14:48 | 435 | 0 | | 03:19:33 | 3918 | 0 |
| 17 | | 00:24:14 | 451 | 0 | | 00:30:38 | 414 | 0 |
| 16 | | 00:23:50 | 1014 | 0 | | 00:30:50 | 999 | 0 |
| 15 | | 00:03:07 | 377 | 0 | | 00:23:21 | 1314 | 0 |
| 14 | | 00:06:03 | 349 | 0 | | 00:33:08 | 791 | 0 |
| 13 | | 00:10:58 | 206 | 0 | | 00:13:17 | 86 | 15 |
| 12 | | 00:13:28 | 351 | 0 | | 15:15:22 | 11962 | 0 |
| 11 | | 00:16:28 | 1442 | 0 | | 00:22:34 | 1247 | 0 |
| 10 | | 00:30:53 | 1425 | 0 | | 02:57:26 | 4042 | 0 |
| 9 | | 00:06:15 | 391 | 0 | | 00:10:15 | 649 | 0 |
| 8 | | 00:10:08 | 2342 | 0 | | 00:22:27 | 935 | 0 |
| 7 | | 00:48:45 | 5358 | 0 | | 01:19:15 | 5448 | 0 |
| 6 | | 00:11:31 | 3410 | 0 | | 00:19:28 | 4343 | 0 |
| 5 | | 00:41:34 | 5078 | 0 | | 01:36:57 | 3297 | 0 |
| 4 | | 00:07:29 | 1838 | 0 | | 00:16:50 | 1544 | 0 |
| 3 | | 00:11:27 | 410 | 0 | | 00:18:16 | 390 | 0 |
| 2 | | 00:10:06 | 1291 | 0 | | 00:11:12 | 721 | 0 |
| 1 | | 00:08:18 | 4103 | 0 | | 00:15:54 | 1155 | 0 |
### 2022
| Day | **Part A** | Time | Rank | Score | **Part B** | Time | Rank | Score |
| --- | ---------- | -------- | ------ | ----- | ---------- | -------- | ------ | ----- |
| 25 | | 00:29:04 | 1265 | 0 | | 00:29:13 | 1070 | 0 |
| 24 | | 00:26:27 | 163 | 0 | | 00:34:07 | 211 | 0 |
| 23 | | 00:46:27 | 1039 | 0 | | 00:48:15 | 869 | 0 |
| 22 | | 00:53:54 | 1298 | 0 | | >24h | 7565 | 0 |
| 21 | | 00:24:23 | 2513 | 0 | | 01:10:00 | 2145 | 0 |
| 20 | | 00:45:41 | 1170 | 0 | | 01:03:15 | 1220 | 0 |
| 19 | | >24h | 11606 | 0 | | >24h | 11715 | 0 |
| 18 | | >24h | 22983 | 0 | | >24h | 18743 | 0 |
| 17 | | 01:00:05 | 1373 | 0 | | 01:16:38 | 588 | 0 |
| 16 | | 01:33:07 | 1313 | 0 | | 01:53:01 | 444 | 0 |
| 15 | | 00:19:33 | 594 | 0 | | 00:51:03 | 820 | 0 |
| 14 | | 00:29:47 | 1764 | 0 | | 00:35:09 | 1553 | 0 |
| 13 | | 00:35:49 | 2440 | 0 | | 00:47:39 | 2415 | 0 |
| 12 | | 00:17:03 | 727 | 0 | | 00:20:08 | 703 | 0 |
| 11 | | >24h | 47528 | 0 | | >24h | 40069 | 0 |
| 10 | | 18:39:38 | 49715 | 0 | | 18:46:07 | 45542 | 0 |
| 9 | | 00:20:30 | 2047 | 0 | | 00:30:48 | 1361 | 0 |
| 8 | | 00:11:57 | 1218 | 0 | | 00:15:21 | 387 | 0 |
| 7 | | 00:32:24 | 2336 | 0 | | 00:36:58 | 1916 | 0 |
| 6 | | 00:41:00 | 16304 | 0 | | 00:41:32 | 15196 | 0 |
| 5 | | 00:12:54 | 967 | 0 | | 00:17:42 | 1403 | 0 |
| 4 | | 00:26:24 | 10765 | 0 | | 00:27:28 | 8959 | 0 |
| 3 | | 01:22:31 | 17075 | 0 | | 01:30:25 | 15172 | 0 |
| 2 | | 00:09:12 | 2428 | 0 | | 00:13:53 | 2068 | 0 |
| 1 | | 22:20:54 | 125928 | 0 | | 22:27:10 | 120889 | 0 |
## Running the Solutions
Since I created separate repositories for the years 2021 and 2022, they have been added as git submodules. Additionally,
the 2023 solutions depend on my own C++ libraries, which are also included as git submodules. To clone this repository
with the submodules, use the following command:
```bash
git clone --recurse-submodules https://github.com/ColeTrammer/adventofcode.git
```
### C++ Code Organization
The source code is located in the `src` directory. Each day has a solution file `$year/$day.cpp`, in a directory of the
form `01`, `02`, etc.
```bash
cmake --preset clang_release_default
cmake --build --preset clang_release_default
export PATH="$(realpath ./build/clang/release):$PATH"
export DAY=01
export YEAR=2023
aoc -y $YEAR -d $DAY
```
The input files are located in the `input` directory. The solution by default reads a file named
`input/$YEAR/input_$DAY.txt` in the current working directory, but can be changed by passing the path to the input file
as a command line argument:
```bash
aoc -y $YEAR -d $DAY -i input.txt
```
To get the solution to part b, pass the `-b` flag:
```bash
aoc -y $YEAR -d $DAY -b
```
To run against the problem provided sample input (named `$YEAR/test_$DAY.txt`), pass the `-t` flag:
```bash
aoc -y $YEAR -d $DAY -t
```
### Utility Scripts
The `scripts` directory contains a number of utility scripts for interacting with the advent of code website. The
scripts require an environment variable named `AOC_SESSION` to be set to the value of the `session` cookie on the advent
of code website. The scripts perform the following functions:
| Script Name | Description |
| ------------- | ---------------------------------------------------------------------------------------------- |
| `download.sh` | Downloads the input file for the given year and day. |
| `new.sh` | Add source code and input stubs for solving a new problem day. |
| `open.sh` | Opens the advent of code website for the given year, day and part in the default browser. |
| `start.sh` | Calls `new.sh`, and then `open.sh` and `download.sh` as soon as the problem becomes available. |
| `submit.sh` | Submits the solution for the given year and day. The solution is provided on stdin. |
### 2022 Past Solutions
The rust solutions for 2022 are located in the `adventofcode2022` directory. Each day has its own rust project, named
`day01`, `day02`, etc. To compile and run a solution, use the following commands:
```bash
DAY=01
cd adventofcode2022/day$DAY
cargo update # This may be required if the Cargo.lock file is out of date
cargo run --release
```
The input files are located in the `adventofcode2022/day$DAY/input.txt` file. The solution defaults to reading a file
named `input.txt` in the current working directory, but can be changed by passing the path to the input file as a
command line argument:
```bash
cargo run --release -- --input input.txt
```
To get the solution for part b, pass the `--part-b` flag:
```bash
cargo run --release -- --part-b
```
To run against the problem provided sample input (named `test.txt`), pass the `--test` flag:
```bash
cargo run --release -- --test
```
### 2021 Past Solutions
The rust solutions for 2021 are located in the `adventofcode2021` directory. Each day has its own rust project, named `day1`,
`day2`, etc. To compile and run a solution, use the following commands:
```bash
DAY=1
cd adventofcode2021/day$DAY
cargo update # This may be required if the Cargo.lock file is out of date
cargo run --release
```
The input files are located in the `adventofcode2021/day$DAY/input.txt` file. The solutions are hard-coded to read a
file named `input.txt` in the current working directory.
### 2020 Past Solutions
The C++ solutions for 2020 are located in the `adventofcode2020` directory. The solutions files are named `1.cpp`, `2.cpp`,
etc. To compile and run a solution, use the following commands:
```bash
DAY=1
cmake -S . -B build -G Ninja
cmake --build build
./build/$DAY
```
The input files are hardcoded as strings in the source code.
## License
This repository is licensed under the MIT license. See the [LICENSE](LICENSE) file for more details.