Files
advent-of-gode/README.md
2023-12-01 15:13:45 +02:00

77 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Advent of Code in Go
A handy template repository to hold your [Advent of Code](https://adventofcode.com) solutions in Go (golang).
Advent of Code (https://adventofcode.com) is a yearly series of programming questions based on the [Advent Calendar](https://en.wikipedia.org/wiki/Advent_calendar). For each day leading up to christmas, there is one question released, and from the second it is released, there is a timer running and a leaderboard showing who solved it first.
---
### Features
* A directory per question `<year>/<day>`
* Auto-download questions into `<year>/<day>/README.md`
* Auto-download example input into `<year>/<day>/input-example.txt`
* With env variable `AOC_SESSION` set:
* Auto-download part 2 of questions into `<year>/<day>/README.md`
* Auto-download user input into `<year>/<day>/input-user.md`
* When you save `code.go`, it will execute your `run` function 4 times:
* Input `input-example.txt` and `part2=false`
* Input `input-example.txt` and `part2=true`
* Input `input-user.txt` and `part2=false`
* Input `input-user.txt` and `part2=true`
* and, will show the results and timing of each
---
### Usage
1. Click "**Use this template**" above to fork it into your account
1. Setup repo, either locally or in codespaces
* Locally
* Install Go from https://go.dev/dl/ or from brew, etc
* Git clone your fork
* Open in VS Code, and install the Go extension
* Codespaces
* Click "Open in Codespaces"
1. Open a terminal and `./run.sh <year> <day>` like this:
```sh
$ ./run.sh 2023 1
[run.sh] created ./2023/01
[run.sh] created ./2023/01/code.go
Created file README.md
Created file input-example.txt
run(part1, input-example) returned in 616µs => 42
```
1. Implement your solution in `./2023/01/code.go` inside the `run` function
* I have provided solutions for year `2022`, days `2`,`4`,`7` however you can delete them and do them yourself if you'd like
1. Changes will re-run the code
* For example, update `code.go` to `return 43` instead you should see:
```sh
file changed code.go
run(part1, input-example) returned in 34µs => 43
```
1. The question is downloaded to `./2023/01/README.md`
1. Login to https://adventofcode.com
1. Find your question (e.g. https://adventofcode.com/2023/day/1) and **[get your puzzle input](https://adventofcode.com/2023/day/1/input)** and save it to `./2023/01/input-user.txt`
* See **Session** below to automate this step
1. Iterate on `code.go` until you get the answer
1. Submit it to https://adventofcode.com/2023/day/1
---
#### Session
**Optionally**, you can set `export AOC_SESSION=<session>` to your adventofcode.com `session` cookie. That is:
* Login with your browser
* Open developer tools > Application/Storage > Cookies
* Retrieve the contents of `session`
* Export it as `AOC_SESSION`
With your session set, running `code.go` will download your user-specifc `input-user.txt` and also update `README.md` with part 2 of the question once you've completed part 1.
Currently, your session is NOT used to submit your answer. You still need to login to https://adventofcode.com to submit.