advent-of-code-go

module
v0.0.0-...-07b6cb4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 1, 2025 License: MIT

README

500 stars!

Quick Note

  1. I started this in a pre-generics Go/Golang world. Maybe one day I'll come back and learn generics as they'd be quite useful here. But that's for future me.
  2. I decided to do 2024 in Python to get used to it for a new job, I have every intention of filling in my solutions in Go... but who knows how long that TODO will last...

Running Locally

Requirements

Go 1.16+ is required because embed is used for input files. Go 1.22 is needed for some features like ranging over ints or built in min() and max(). I started using these for the 2023 solutions iirc.

Use go run main.go -part <1 or 2> will be usable to run the actual inputs for that day.

Use go test -run RegExpToMatchFunctionNames . to run examples and unit tests via the main_test.go files.

Scripts (used for all years but 2019)

Makefile should be fairly self-documenting. Alternatively you can run the binaries yourself via go run or go build.

make help prints a help message.

Make skeleton files

for ((i=1; i<26; i++)); do
make skeleton DAY=$i YEAR=2021
done

Note that skeletons use embed and will not compile without an input.txt file located in the same folder. Input files can be made via make input.

make skeleton DAY=5 YEAR=2020
make input DAY=5 YEAR=2020 AOC_SESSION_COOKIE=your_cookie

Fetch inputs and write to input.txt files

Requires passing your cookie from AOC from either -cookie flag, or AOC_SESSION_COOKIE env variable.

make input DAY=1 YEAR=2020

Directories

Path Synopsis
2015
day01 command
day02 command
day03 command
day04 command
day05 command
day06 command
day07 command
day08 command
day09 command
day10 command
day11 command
day12 command
day13 command
day14 command
day15 command
day16 command
day17 command
day18 command
day19 command
day20 command
day21 command
day22 command
day23 command
day24 command
day25 command
2016
day01 command
day02 command
day03 command
day04 command
day05 command
day06 command
day07 command
day08 command
day09 command
day10 command
day11 command
day12 command
day13 command
day14 command
day15 command
day16 command
day17 command
day18 command
day19 command
day20 command
day21 command
day22 command
day23 command
day24 command
day25 command
2017
day01 command
day02 command
day03 command
day04 command
day05 command
day06 command
day07 command
day08 command
day09 command
day10 command
day11 command
day12 command
day13 command
day14 command
day15 command
day16 command
day17 command
day18 command
day19 command
day20 command
day21 command
day22 command
day23 command
day24 command
day25 command
2018
day01 command
day02 command
day03 command
day04 command
day05 command
day06 command
day07 command
day08 command
day09 command
day10 command
day11 command
day12 command
day13 command
Accidentally named all the carts miners for some reason...
Accidentally named all the carts miners for some reason...
day14 command
day15 command
day16 command
day17 command
day18 command
day19 command
day20 command
day21 command
day22 command
day23 command
day24 command
day25 command
2019
day01 command
day02/part1 command
day02/part2 command
day03/part1 command
day03/part2 command
day04/part1 command
day04/part2 command
day05/part1 command
day05/part2 command
day06/part1 command
day06/part2 command
day07/part1 command
day07/part2 command
day08/part1 command
day08/part2 command
day09/part1 command
day09/part2 command
day10/part1 command
day10/part2 command
day11/part1 command
day11/part2 command
day12/part1 command
day12/part2 command
day13/part1 command
day13/part2 command
day14/part1 command
day14/part2 command
day15/part1 command
day15/part2 command
day16/part1 command
day16/part2 command
day17/part1 command
day17/part2 command
day18/part1 command
day18/part2 command
day19/part1 command
day19/part2 command
day20/part1 command
day20/part2 command
day21/part1 command
day21/part2 command
day22/part1 command
day22/part2 command
day23/part1 command
day23/part2 command
day24/part1 command
day24/part2 command
day25/part1 command
day25/part2 command
2020
day01 command
day02 command
day03 command
day04 command
day05 command
day06 command
day07 command
day08 command
day09 command
day10 command
day11 command
day12 command
day13 command
day14 command
day15 command
day16 command
day17 command
day18 command
day19 command
day20 command
day21 command
day22 command
day23 command
day24 command
day25 command
2021
day01 command
day02 command
day03 command
day04 command
day05 command
day06 command
day07 command
day08 command
day09 command
day10 command
day11 command
day12 command
day13 command
day14 command
day15 command
day16 command
day17 command
day18 command
day19 command
day20 command
day21 command
day22 command
day23 command
day24 command
day25 command
2022
day01 command
day02 command
day03 command
day04 command
day05 command
day06 command
day07 command
day08 command
day09 command
day10 command
day11 command
day12 command
day13 command
day14 command
day15 command
day16 command
day17 command
day18 command
day19 command
day20 command
day21 command
day22 command
day23 command
day24 command
day25 command
2023
day01 command
day02 command
day03 command
day04 command
day05 command
day06 command
day07 command
day07/part2 command
day08 command
day09 command
day10 command
day11 command
day12 command
day13 command
day14 command
day15 command
day16 command
day17 command
day18 command
day19 command
day20 command
day21 command
day22 command
day23 command
day24 command
day25 command
2024
day01 command
day02 command
day24 command
data-structures
set
Package halp is a bunch of helpers for AOC specific debugging like printing infinite grids (map[[2]int]<T> <- Go generics will be useful here...)
Package halp is a bunch of helpers for AOC specific debugging like printing infinite grids (map[[2]int]<T> <- Go generics will be useful here...)
Package learning is for testing random things that might be useful but I need to spend some time playing around with
Package learning is for testing random things that might be useful but I need to spend some time playing around with
scripts
aoc
Package aoc gets inputs and prompts from adventofcode.com
Package aoc gets inputs and prompts from adventofcode.com
cmd/input command
cmd/prompt command
cmd/skeleton command
skeleton
Package skeleton makes skeletons to be filled out with solutions.
Package skeleton makes skeletons to be filled out with solutions.
skeleton/tmpls command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL