Skip to content

Asgmel/aockit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Advent of Code Toolkit

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.

Installation

go get github.com/asgmel/aockit

Features

๐Ÿ“ฅ Input Reading (input package)

Simplify reading and parsing puzzle inputs with multiple convenience functions:

  • ReadInputString(path) - Read entire file as a single string
  • ReadInputLines(path) - Split input into lines
  • ReadInputLetters(path) - Parse input into a 2D grid of individual characters
  • ReadInputRegex(path, regex) - Extract all matches for a regex pattern

Example

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+`)

๐Ÿ“ Position Helpers (grid package)

Work with 2D coordinates effortlessly:

  • Position{X, Y} - Simple 2D coordinate struct
  • ToString() - Convert position to string representation
  • WithinBounds(matrix) - Check if position is within grid bounds

Example

import "github.com/asgmel/aockit/grid"

pos := grid.Position{X: 5, Y: 10}
if pos.WithinBounds(grid) {
    // Position is valid
}

๐Ÿ› ๏ธ Utility Functions (utils package)

Common operations you'll use repeatedly:

  • AbsoluteValue(int) - Get absolute value
  • SumIntSlice([]int) - Sum all integers in a slice
  • ConvertStrSliceToIntSlice([]string) - Convert string slice to integers
  • CopySlice[T]([]T) - Create a deep copy of any slice
  • FilterDuplicates[T]([]T) - Remove duplicate values

Example

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"]

Usage

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)
}

Requirements

  • Go 1.25.4 or higher

License

MIT

About

Toolkit with common tools for Advent of Code

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages