A reusable Go toolkit for solving Advent of Code puzzles. This library provides common utilities, data structures, and helper functions to streamline your AoC solutions.
go get github.com/asgmel/aockitSimplify reading and parsing puzzle inputs with multiple convenience functions:
ReadInputString(path)- Read entire file as a single stringReadInputLines(path)- Split input into linesReadInputLetters(path)- Parse input into a 2D grid of individual charactersReadInputRegex(path, regex)- Extract all matches for a regex pattern
import "github.com/asgmel/aockit/input"
// Read all lines
lines := input.ReadInputLines("input.txt")
// Parse as character grid
grid := input.ReadInputLetters("input.txt")
// Extract numbers
numbers := input.ReadInputRegex("input.txt", `\d+`)Work with 2D coordinates effortlessly:
Position{X, Y}- Simple 2D coordinate structToString()- Convert position to string representationWithinBounds(matrix)- Check if position is within grid bounds
import "github.com/asgmel/aockit/grid"
pos := grid.Position{X: 5, Y: 10}
if pos.WithinBounds(grid) {
// Position is valid
}Common operations you'll use repeatedly:
AbsoluteValue(int)- Get absolute valueSumIntSlice([]int)- Sum all integers in a sliceConvertStrSliceToIntSlice([]string)- Convert string slice to integersCopySlice[T]([]T)- Create a deep copy of any sliceFilterDuplicates[T]([]T)- Remove duplicate values
import "github.com/asgmel/aockit/utils"
sum := utils.SumIntSlice([]int{1, 2, 3, 4, 5}) // 15
unique := utils.FilterDuplicates([]string{"a", "b", "a"}) // ["a", "b"]Import the packages you need in your Advent of Code solutions:
package main
import (
"fmt"
"github.com/asgmel/aockit/input"
"github.com/asgmel/aockit/utils"
)
func main() {
lines := input.ReadInputLines("day01/input.txt")
numbers := utils.ConvertStrSliceToIntSlice(lines)
total := utils.SumIntSlice(numbers)
fmt.Println(total)
}- Go 1.25.4 or higher
MIT