https://github.com/javran/advent-of-code
Solutions, scripting, and templates for adventofcode.com
https://github.com/javran/advent-of-code
advent-of-code
Last synced: 11 months ago
JSON representation
Solutions, scripting, and templates for adventofcode.com
- Host: GitHub
- URL: https://github.com/javran/advent-of-code
- Owner: Javran
- License: apache-2.0
- Created: 2021-11-29T06:08:12.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-03-02T08:47:47.000Z (over 2 years ago)
- Last Synced: 2025-04-14T09:43:13.863Z (about 1 year ago)
- Topics: advent-of-code
- Language: Haskell
- Homepage:
- Size: 2.21 MB
- Stars: 23
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Javran's Advent of Code
Solutions, scripting, and templates - all in one repo.
## Progress
[//]: # (how to comment in MD: https://stackoverflow.com/a/20885980/315302)
[//]: # (PROGRESS_AUTOGEN_BEGIN)
### 2023
| `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` |
| :-: | :-: | :-: | :-: | :-: |
| ☑ [Day 1](src/Javran/AdventOfCode/Y2023/Day1.hs) | ☑ [Day 2](src/Javran/AdventOfCode/Y2023/Day2.hs) | ☑ [Day 3](src/Javran/AdventOfCode/Y2023/Day3.hs) | ☑ [Day 4](src/Javran/AdventOfCode/Y2023/Day4.hs) | ☑ [Day 5](src/Javran/AdventOfCode/Y2023/Day5.hs) |
| ☑ [Day 6](src/Javran/AdventOfCode/Y2023/Day6.hs) | ☑ [Day 7](src/Javran/AdventOfCode/Y2023/Day7.hs) | ☑ [Day 8](src/Javran/AdventOfCode/Y2023/Day8.hs) | ☑ [Day 9](src/Javran/AdventOfCode/Y2023/Day9.hs) | ☑ [Day 10](src/Javran/AdventOfCode/Y2023/Day10.hs) |
| ☑ [Day 11](src/Javran/AdventOfCode/Y2023/Day11.hs) | ☑ [Day 12](src/Javran/AdventOfCode/Y2023/Day12.hs) | ☑ [Day 13](src/Javran/AdventOfCode/Y2023/Day13.hs) | ☑ [Day 14](src/Javran/AdventOfCode/Y2023/Day14.hs) | ☑ [Day 15](src/Javran/AdventOfCode/Y2023/Day15.hs) |
| ☑ [Day 16](src/Javran/AdventOfCode/Y2023/Day16.hs) | ☑ [Day 17](src/Javran/AdventOfCode/Y2023/Day17.hs) | ☑ [Day 18](src/Javran/AdventOfCode/Y2023/Day18.hs) | ☑ [Day 19](src/Javran/AdventOfCode/Y2023/Day19.hs) | ☑ [Day 20](src/Javran/AdventOfCode/Y2023/Day20.hs) |
| ☐ [Day 21](src/Javran/AdventOfCode/Y2023/Day21.hs) | ☑ [Day 22](src/Javran/AdventOfCode/Y2023/Day22.hs) | ☑ [Day 23](src/Javran/AdventOfCode/Y2023/Day23.hs) | ☑ [Day 24](src/Javran/AdventOfCode/Y2023/Day24.hs) | ☑ [Day 25](src/Javran/AdventOfCode/Y2023/Day25.hs) |
### 2022
| `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` |
| :-: | :-: | :-: | :-: | :-: |
| ☑ [Day 1](src/Javran/AdventOfCode/Y2022/Day1.hs) | ☑ [Day 2](src/Javran/AdventOfCode/Y2022/Day2.hs) | ☑ [Day 3](src/Javran/AdventOfCode/Y2022/Day3.hs) | ☑ [Day 4](src/Javran/AdventOfCode/Y2022/Day4.hs) | ☑ [Day 5](src/Javran/AdventOfCode/Y2022/Day5.hs) |
| ☑ [Day 6](src/Javran/AdventOfCode/Y2022/Day6.hs) | ☑ [Day 7](src/Javran/AdventOfCode/Y2022/Day7.hs) | ☑ [Day 8](src/Javran/AdventOfCode/Y2022/Day8.hs) | ☑ [Day 9](src/Javran/AdventOfCode/Y2022/Day9.hs) | ☑ [Day 10](src/Javran/AdventOfCode/Y2022/Day10.hs) |
| ☑ [Day 11](src/Javran/AdventOfCode/Y2022/Day11.hs) | ☑ [Day 12](src/Javran/AdventOfCode/Y2022/Day12.hs) | ☑ [Day 13](src/Javran/AdventOfCode/Y2022/Day13.hs) | ☑ [Day 14](src/Javran/AdventOfCode/Y2022/Day14.hs) | ☑ [Day 15](src/Javran/AdventOfCode/Y2022/Day15.hs) |
| ☑ [Day 16](src/Javran/AdventOfCode/Y2022/Day16.hs) | ☑ [Day 17](src/Javran/AdventOfCode/Y2022/Day17.hs) | ☑ [Day 18](src/Javran/AdventOfCode/Y2022/Day18.hs) | ☑ [Day 19](src/Javran/AdventOfCode/Y2022/Day19.hs) | ☑ [Day 20](src/Javran/AdventOfCode/Y2022/Day20.hs) |
| ☑ [Day 21](src/Javran/AdventOfCode/Y2022/Day21.hs) | ☑ [Day 22](src/Javran/AdventOfCode/Y2022/Day22.hs) | ☑ [Day 23](src/Javran/AdventOfCode/Y2022/Day23.hs) | ☑ [Day 24](src/Javran/AdventOfCode/Y2022/Day24.hs) | ☑ [Day 25](src/Javran/AdventOfCode/Y2022/Day25.hs) |
### 2021
| `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` |
| :-: | :-: | :-: | :-: | :-: |
| ☑ [Day 1](src/Javran/AdventOfCode/Y2021/Day1.hs) | ☑ [Day 2](src/Javran/AdventOfCode/Y2021/Day2.hs) | ☑ [Day 3](src/Javran/AdventOfCode/Y2021/Day3.hs) | ☑ [Day 4](src/Javran/AdventOfCode/Y2021/Day4.hs) | ☑ [Day 5](src/Javran/AdventOfCode/Y2021/Day5.hs) |
| ☑ [Day 6](src/Javran/AdventOfCode/Y2021/Day6.hs) | ☑ [Day 7](src/Javran/AdventOfCode/Y2021/Day7.hs) | ☑ [Day 8](src/Javran/AdventOfCode/Y2021/Day8.hs) | ☑ [Day 9](src/Javran/AdventOfCode/Y2021/Day9.hs) | ☑ [Day 10](src/Javran/AdventOfCode/Y2021/Day10.hs) |
| ☑ [Day 11](src/Javran/AdventOfCode/Y2021/Day11.hs) | ☑ [Day 12](src/Javran/AdventOfCode/Y2021/Day12.hs) | ☑ [Day 13](src/Javran/AdventOfCode/Y2021/Day13.hs) | ☑ [Day 14](src/Javran/AdventOfCode/Y2021/Day14.hs) | ☑ [Day 15](src/Javran/AdventOfCode/Y2021/Day15.hs) |
| ☑ [Day 16](src/Javran/AdventOfCode/Y2021/Day16.hs) | ☑ [Day 17](src/Javran/AdventOfCode/Y2021/Day17.hs) | ☑ [Day 18](src/Javran/AdventOfCode/Y2021/Day18.hs) | ☑ [Day 19](src/Javran/AdventOfCode/Y2021/Day19.hs) | ☑ [Day 20](src/Javran/AdventOfCode/Y2021/Day20.hs) |
| ☑ [Day 21](src/Javran/AdventOfCode/Y2021/Day21.hs) | ☑ [Day 22](src/Javran/AdventOfCode/Y2021/Day22.hs) | ☑ [Day 23](src/Javran/AdventOfCode/Y2021/Day23.hs) | ☑ [Day 24](src/Javran/AdventOfCode/Y2021/Day24.hs) | ☑ [Day 25](src/Javran/AdventOfCode/Y2021/Day25.hs) |
### 2020
| `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` |
| :-: | :-: | :-: | :-: | :-: |
| ☑ [Day 1](src/Javran/AdventOfCode/Y2020/Day1.hs) | ☑ [Day 2](src/Javran/AdventOfCode/Y2020/Day2.hs) | ☑ [Day 3](src/Javran/AdventOfCode/Y2020/Day3.hs) | ☑ [Day 4](src/Javran/AdventOfCode/Y2020/Day4.hs) | ☑ [Day 5](src/Javran/AdventOfCode/Y2020/Day5.hs) |
| ☑ [Day 6](src/Javran/AdventOfCode/Y2020/Day6.hs) | ☑ [Day 7](src/Javran/AdventOfCode/Y2020/Day7.hs) | ☑ [Day 8](src/Javran/AdventOfCode/Y2020/Day8.hs) | ☑ [Day 9](src/Javran/AdventOfCode/Y2020/Day9.hs) | ☑ [Day 10](src/Javran/AdventOfCode/Y2020/Day10.hs) |
| ☑ [Day 11](src/Javran/AdventOfCode/Y2020/Day11.hs) | ☑ [Day 12](src/Javran/AdventOfCode/Y2020/Day12.hs) | ☑ [Day 13](src/Javran/AdventOfCode/Y2020/Day13.hs) | ☑ [Day 14](src/Javran/AdventOfCode/Y2020/Day14.hs) | ☑ [Day 15](src/Javran/AdventOfCode/Y2020/Day15.hs) |
| ☑ [Day 16](src/Javran/AdventOfCode/Y2020/Day16.hs) | ☑ [Day 17](src/Javran/AdventOfCode/Y2020/Day17.hs) | ☑ [Day 18](src/Javran/AdventOfCode/Y2020/Day18.hs) | ☑ [Day 19](src/Javran/AdventOfCode/Y2020/Day19.hs) | ☑ [Day 20](src/Javran/AdventOfCode/Y2020/Day20.hs) |
| ☑ [Day 21](src/Javran/AdventOfCode/Y2020/Day21.hs) | ☑ [Day 22](src/Javran/AdventOfCode/Y2020/Day22.hs) | ☑ [Day 23](src/Javran/AdventOfCode/Y2020/Day23.hs) | ☑ [Day 24](src/Javran/AdventOfCode/Y2020/Day24.hs) | ☑ [Day 25](src/Javran/AdventOfCode/Y2020/Day25.hs) |
### 2019
| `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` |
| :-: | :-: | :-: | :-: | :-: |
| ☑ [Day 1](src/Javran/AdventOfCode/Y2019/Day1.hs) | ☑ [Day 2](src/Javran/AdventOfCode/Y2019/Day2.hs) | ☑ [Day 3](src/Javran/AdventOfCode/Y2019/Day3.hs) | ☑ [Day 4](src/Javran/AdventOfCode/Y2019/Day4.hs) | ☑ [Day 5](src/Javran/AdventOfCode/Y2019/Day5.hs) |
| ☑ [Day 6](src/Javran/AdventOfCode/Y2019/Day6.hs) | ☑ [Day 7](src/Javran/AdventOfCode/Y2019/Day7.hs) | ☑ [Day 8](src/Javran/AdventOfCode/Y2019/Day8.hs) | ☑ [Day 9](src/Javran/AdventOfCode/Y2019/Day9.hs) | ☑ [Day 10](src/Javran/AdventOfCode/Y2019/Day10.hs) |
| ☑ [Day 11](src/Javran/AdventOfCode/Y2019/Day11.hs) | ☑ [Day 12](src/Javran/AdventOfCode/Y2019/Day12.hs) | ☑ [Day 13](src/Javran/AdventOfCode/Y2019/Day13.hs) | ☑ [Day 14](src/Javran/AdventOfCode/Y2019/Day14.hs) | ☑ [Day 15](src/Javran/AdventOfCode/Y2019/Day15.hs) |
| ☑ [Day 16](src/Javran/AdventOfCode/Y2019/Day16.hs) | ☑ [Day 17](src/Javran/AdventOfCode/Y2019/Day17.hs) | ☑ [Day 18](src/Javran/AdventOfCode/Y2019/Day18.hs) | ☑ [Day 19](src/Javran/AdventOfCode/Y2019/Day19.hs) | ☑ [Day 20](src/Javran/AdventOfCode/Y2019/Day20.hs) |
| ☑ [Day 21](src/Javran/AdventOfCode/Y2019/Day21.hs) | ☑ [Day 22](src/Javran/AdventOfCode/Y2019/Day22.hs) | ☑ [Day 23](src/Javran/AdventOfCode/Y2019/Day23.hs) | ☑ [Day 24](src/Javran/AdventOfCode/Y2019/Day24.hs) | ☑ [Day 25](src/Javran/AdventOfCode/Y2019/Day25.hs) |
### 2018
| `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` |
| :-: | :-: | :-: | :-: | :-: |
| ☑ [Day 1](src/Javran/AdventOfCode/Y2018/Day1.hs) | ☑ [Day 2](src/Javran/AdventOfCode/Y2018/Day2.hs) | ☑ [Day 3](src/Javran/AdventOfCode/Y2018/Day3.hs) | ☑ [Day 4](src/Javran/AdventOfCode/Y2018/Day4.hs) | ☑ [Day 5](src/Javran/AdventOfCode/Y2018/Day5.hs) |
| ☑ [Day 6](src/Javran/AdventOfCode/Y2018/Day6.hs) | ☑ [Day 7](src/Javran/AdventOfCode/Y2018/Day7.hs) | ☑ [Day 8](src/Javran/AdventOfCode/Y2018/Day8.hs) | ☑ [Day 9](src/Javran/AdventOfCode/Y2018/Day9.hs) | ☑ [Day 10](src/Javran/AdventOfCode/Y2018/Day10.hs) |
| ☑ [Day 11](src/Javran/AdventOfCode/Y2018/Day11.hs) | ☑ [Day 12](src/Javran/AdventOfCode/Y2018/Day12.hs) | ☑ [Day 13](src/Javran/AdventOfCode/Y2018/Day13.hs) | ☑ [Day 14](src/Javran/AdventOfCode/Y2018/Day14.hs) | ☑ [Day 15](src/Javran/AdventOfCode/Y2018/Day15.hs) |
| ☑ [Day 16](src/Javran/AdventOfCode/Y2018/Day16.hs) | ☑ [Day 17](src/Javran/AdventOfCode/Y2018/Day17.hs) | ☑ [Day 18](src/Javran/AdventOfCode/Y2018/Day18.hs) | ☑ [Day 19](src/Javran/AdventOfCode/Y2018/Day19.hs) | ☑ [Day 20](src/Javran/AdventOfCode/Y2018/Day20.hs) |
| ☑ [Day 21](src/Javran/AdventOfCode/Y2018/Day21.hs) | ☑ [Day 22](src/Javran/AdventOfCode/Y2018/Day22.hs) | ☑ [Day 23](src/Javran/AdventOfCode/Y2018/Day23.hs) | ☑ [Day 24](src/Javran/AdventOfCode/Y2018/Day24.hs) | ☑ [Day 25](src/Javran/AdventOfCode/Y2018/Day25.hs) |
### 2017
| `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` |
| :-: | :-: | :-: | :-: | :-: |
| ☑ [Day 1](src/Javran/AdventOfCode/Y2017/Day1.hs) | ☑ [Day 2](src/Javran/AdventOfCode/Y2017/Day2.hs) | ☑ [Day 3](src/Javran/AdventOfCode/Y2017/Day3.hs) | ☑ [Day 4](src/Javran/AdventOfCode/Y2017/Day4.hs) | ☑ [Day 5](src/Javran/AdventOfCode/Y2017/Day5.hs) |
| ☑ [Day 6](src/Javran/AdventOfCode/Y2017/Day6.hs) | ☑ [Day 7](src/Javran/AdventOfCode/Y2017/Day7.hs) | ☑ [Day 8](src/Javran/AdventOfCode/Y2017/Day8.hs) | ☑ [Day 9](src/Javran/AdventOfCode/Y2017/Day9.hs) | ☑ [Day 10](src/Javran/AdventOfCode/Y2017/Day10.hs) |
| ☑ [Day 11](src/Javran/AdventOfCode/Y2017/Day11.hs) | ☑ [Day 12](src/Javran/AdventOfCode/Y2017/Day12.hs) | ☑ [Day 13](src/Javran/AdventOfCode/Y2017/Day13.hs) | ☑ [Day 14](src/Javran/AdventOfCode/Y2017/Day14.hs) | ☑ [Day 15](src/Javran/AdventOfCode/Y2017/Day15.hs) |
| ☑ [Day 16](src/Javran/AdventOfCode/Y2017/Day16.hs) | ☑ [Day 17](src/Javran/AdventOfCode/Y2017/Day17.hs) | ☑ [Day 18](src/Javran/AdventOfCode/Y2017/Day18.hs) | ☑ [Day 19](src/Javran/AdventOfCode/Y2017/Day19.hs) | ☑ [Day 20](src/Javran/AdventOfCode/Y2017/Day20.hs) |
| ☑ [Day 21](src/Javran/AdventOfCode/Y2017/Day21.hs) | ☑ [Day 22](src/Javran/AdventOfCode/Y2017/Day22.hs) | ☑ [Day 23](src/Javran/AdventOfCode/Y2017/Day23.hs) | ☑ [Day 24](src/Javran/AdventOfCode/Y2017/Day24.hs) | ☑ [Day 25](src/Javran/AdventOfCode/Y2017/Day25.hs) |
### 2016
| `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` |
| :-: | :-: | :-: | :-: | :-: |
| ☑ [Day 1](src/Javran/AdventOfCode/Y2016/Day1.hs) | ☑ [Day 2](src/Javran/AdventOfCode/Y2016/Day2.hs) | ☑ [Day 3](src/Javran/AdventOfCode/Y2016/Day3.hs) | ☑ [Day 4](src/Javran/AdventOfCode/Y2016/Day4.hs) | ☑ [Day 5](src/Javran/AdventOfCode/Y2016/Day5.hs) |
| ☑ [Day 6](src/Javran/AdventOfCode/Y2016/Day6.hs) | ☑ [Day 7](src/Javran/AdventOfCode/Y2016/Day7.hs) | ☑ [Day 8](src/Javran/AdventOfCode/Y2016/Day8.hs) | ☑ [Day 9](src/Javran/AdventOfCode/Y2016/Day9.hs) | ☑ [Day 10](src/Javran/AdventOfCode/Y2016/Day10.hs) |
| ☑ [Day 11](src/Javran/AdventOfCode/Y2016/Day11.hs) | ☑ [Day 12](src/Javran/AdventOfCode/Y2016/Day12.hs) | ☑ [Day 13](src/Javran/AdventOfCode/Y2016/Day13.hs) | ☑ [Day 14](src/Javran/AdventOfCode/Y2016/Day14.hs) | ☑ [Day 15](src/Javran/AdventOfCode/Y2016/Day15.hs) |
| ☑ [Day 16](src/Javran/AdventOfCode/Y2016/Day16.hs) | ☑ [Day 17](src/Javran/AdventOfCode/Y2016/Day17.hs) | ☑ [Day 18](src/Javran/AdventOfCode/Y2016/Day18.hs) | ☑ [Day 19](src/Javran/AdventOfCode/Y2016/Day19.hs) | ☑ [Day 20](src/Javran/AdventOfCode/Y2016/Day20.hs) |
| ☑ [Day 21](src/Javran/AdventOfCode/Y2016/Day21.hs) | ☑ [Day 22](src/Javran/AdventOfCode/Y2016/Day22.hs) | ☑ [Day 23](src/Javran/AdventOfCode/Y2016/Day23.hs) | ☑ [Day 24](src/Javran/AdventOfCode/Y2016/Day24.hs) | ☑ [Day 25](src/Javran/AdventOfCode/Y2016/Day25.hs) |
### 2015
| `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` | `<++++++++>` |
| :-: | :-: | :-: | :-: | :-: |
| ☑ [Day 1](src/Javran/AdventOfCode/Y2015/Day1.hs) | ☑ [Day 2](src/Javran/AdventOfCode/Y2015/Day2.hs) | ☑ [Day 3](src/Javran/AdventOfCode/Y2015/Day3.hs) | ☑ [Day 4](src/Javran/AdventOfCode/Y2015/Day4.hs) | ☑ [Day 5](src/Javran/AdventOfCode/Y2015/Day5.hs) |
| ☑ [Day 6](src/Javran/AdventOfCode/Y2015/Day6.hs) | ☑ [Day 7](src/Javran/AdventOfCode/Y2015/Day7.hs) | ☑ [Day 8](src/Javran/AdventOfCode/Y2015/Day8.hs) | ☑ [Day 9](src/Javran/AdventOfCode/Y2015/Day9.hs) | ☑ [Day 10](src/Javran/AdventOfCode/Y2015/Day10.hs) |
| ☑ [Day 11](src/Javran/AdventOfCode/Y2015/Day11.hs) | ☑ [Day 12](src/Javran/AdventOfCode/Y2015/Day12.hs) | ☑ [Day 13](src/Javran/AdventOfCode/Y2015/Day13.hs) | ☑ [Day 14](src/Javran/AdventOfCode/Y2015/Day14.hs) | ☑ [Day 15](src/Javran/AdventOfCode/Y2015/Day15.hs) |
| ☑ [Day 16](src/Javran/AdventOfCode/Y2015/Day16.hs) | ☑ [Day 17](src/Javran/AdventOfCode/Y2015/Day17.hs) | ☑ [Day 18](src/Javran/AdventOfCode/Y2015/Day18.hs) | ☑ [Day 19](src/Javran/AdventOfCode/Y2015/Day19.hs) | ☑ [Day 20](src/Javran/AdventOfCode/Y2015/Day20.hs) |
| ☑ [Day 21](src/Javran/AdventOfCode/Y2015/Day21.hs) | ☑ [Day 22](src/Javran/AdventOfCode/Y2015/Day22.hs) | ☑ [Day 23](src/Javran/AdventOfCode/Y2015/Day23.hs) | ☑ [Day 24](src/Javran/AdventOfCode/Y2015/Day24.hs) | ☑ [Day 25](src/Javran/AdventOfCode/Y2015/Day25.hs) |
[//]: # (PROGRESS_AUTOGEN_END)
## Run solutions
Environment variables required:
- `PROJECT_HOME`: path to project home
- `ADVENT_OF_CODE_SESSION`: session value for downloading input files, this can be found in request header using web browsers.
To run:
```sh
PROJECT_HOME=/path/to/project/home
ADVENT_OF_CODE_SESSION=
stack build && stack exec -- run-advent-of-code
```
## Data sources
Files under `data/download/` directory (intentionally ignored from VCS) are downloaded from [Advent of Code](https://adventofcode.com/).
Files with name `*.input.txt` or `*.expect.txt` under `data/testdata/` directory are manually maintained but
some of them are originated from problem descriptions from [Advent of Code](https://adventofcode.com/).