An open API service indexing awesome lists of open source software.

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

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/).