A handy template repository to hold your Advent of Code solutions in Go (golang).
Advent of Code (https://adventofcode.com) is a yearly series of programming questions based on the 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.
- 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
- Only runs part 2 once part 1 is completed
- Auto-download part 2 of questions into
- When you save
code.go
, it will execute yourrun
function 4 times:- Input
input-example.txt
andpart2=false
- Input
input-example(2).txt
andpart2=true
- Input
input-user.txt
andpart2=false
- Input
input-user(2).txt
andpart2=true
- Each run will display the return value and timing.
- Part 2 will use the
<file>2.txt
if it exists.
- Input
- Control execution with
PART= INPUT= ./run.sh <year> <day>
, wherePART
can be1
or2
, andINPUT
can beexample
oruser
-
Click "Use this template" above to fork it into your account
-
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"
- Locally
-
Open a terminal and
./run.sh <year> <day>
like this:$ ./run.sh 2023 1 Created directory ./2023/01 Created file code.go Created file README.md Created file input-example.txt run(part1, input-example) returned in 616µs => 42
-
Implement your solution in
./2023/01/code.go
inside therun
function- I have provided solutions for year
2022
, days2
,4
,7
– however you can delete them and do them yourself if you'd like
- I have provided solutions for year
-
Changes will re-run the code
- For example, update
code.go
toreturn 43
instead you should see:
file changed code.go run(part1, input-example) returned in 34µs => 43
- For example, update
-
The question is downloaded to
./2023/01/README.md
-
Login to https://adventofcode.com
-
Find your question (e.g. https://adventofcode.com/2023/day/1) and get your puzzle input and save it to
./2023/01/input-user.txt
- See Session below to automate this step
-
Iterate on
code.go
until you get the answer -
Submit it to https://adventofcode.com/2023/day/1
Optionally, you can export AOC_SESSION=<session>
from 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.