puzzles

package
v1.15.0 Latest Latest
Warning

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

Go to latest
Published: Dec 1, 2023 License: MIT Imports: 12 Imported by: 0

Documentation

Overview

Package puzzles declares common interface for puzzle solutions and functionality for register and run them.

Index

Constants

View Source
const (

	// AOCSession env variable name.
	AOCSession = "AOC_SESSION"
)

Variables

View Source
var (
	// ErrInvalidPuzzleName means that such puzzle not exist.
	ErrInvalidPuzzleName = errors.New("invalid puzzle name")
	// ErrInvalidYear means that such year not exist.
	ErrInvalidYear = errors.New("invalid year")
	// ErrNotImplemented signal that puzzle in not implemented yet.
	ErrNotImplemented = errors.New("not implemented")
)
View Source
var (
	// ErrYearMissed returns when year is empty.
	ErrYearMissed = errors.New("empty puzzle year")
	// ErrDayMissed returns when day is empty.
	ErrDayMissed = errors.New("empty puzzle day")
	// ErrUnknownYear returns when no puzzle find for year.
	ErrUnknownYear = errors.New("unknown puzzle year")
	// ErrUnknownDay returns when no puzzle find for day.
	ErrUnknownDay = errors.New("unknown puzzle day")
)

Functions

func DaysByYear added in v0.11.0

func DaysByYear(year string) []string

DaysByYear returns a sorted list of the days of the registered puzzle solvers for passed year.

func GetYears

func GetYears() []string

GetYears returns list of available years for solvers.

func MakeName

func MakeName(year, puzzle string) (string, error)

MakeName builds puzzle name according to year and puzzle passed.

func Register

func Register(solver Solver)

Register makes a puzzle solver available by the provided name. If Register is called twice with the same name or if solver is nil, it panics.

func UnregisterAllSolvers

func UnregisterAllSolvers(tb testing.TB)

UnregisterAllSolvers cleans up registered solvers. Use for testing only.

Types

type Day added in v0.11.0

type Day int

Day presents here for purpose of documentation.

const (
	Day01 Day // 1
	Day02     // 2
	Day03     // 3
	Day04     // 4
	Day05     // 5
	Day06     // 6
	Day07     // 7
	Day08     // 8
	Day09     // 9
	Day10     // 10
	Day11     // 11
	Day12     // 12
	Day13     // 13
	Day14     // 14
	Day15     // 15
	Day16     // 16
	Day17     // 17
	Day18     // 18
	Day19     // 19
	Day20     // 20
	Day21     // 21
	Day22     // 22
	Day23     // 23
	Day24     // 24
	Day25     // 25

)

func (Day) String added in v0.11.0

func (i Day) String() string

type Result

type Result struct {
	Year  string
	Name  string
	Part1 string
	Part2 string
	// contains filtered or unexported fields
}

Result represents puzzle solution result.

func Solve added in v0.19.0

func Solve(solver Solver, input io.Reader, opts ...RunOption) (Result, error)

Solve input to solve puzzle.

func (Result) String added in v0.9.0

func (r Result) String() string

type RunOption added in v0.14.0

type RunOption interface {
	Apply(opts *runParams)
}

RunOption provides run options pattern.

func WithBenchmark added in v0.14.0

func WithBenchmark() RunOption

WithBenchmark add benchmark metric to run options.

func WithElapsed added in v0.14.0

func WithElapsed() RunOption

WithElapsed add elapsed metric to run options.

type Solver

type Solver interface {
	Part1(input io.Reader) (string, error)
	Part2(input io.Reader) (string, error)
	Day() string
	Year() string
}

Solver represents solutions for puzzles methods.

func GetSolver

func GetSolver(year, day string) (Solver, error)

GetSolver returns registered solver by passed puzzle day.

type Year added in v0.11.0

type Year int

Year presents here for purpose of documentation.

const (
	Year2015 Year // 2015
	Year2016      // 2016
	Year2017      // 2017
	Year2018      // 2018
	Year2019      // 2019
	Year2020      // 2020
	Year2021      // 2021
	Year2022      // 2022
	Year2023      // 2023

)

func (Year) String added in v0.11.0

func (i Year) String() string

Directories

Path Synopsis
common
intcomputer
Package intcomputer provides functionality for Intcode programs calculation Intcode programs are given as a list of integers; these values are used as the initial state for the computer's memory.
Package intcomputer provides functionality for Intcode programs calculation Intcode programs are given as a list of integers; these values are used as the initial state for the computer's memory.
utils
Package utils provide common used functionality to work with files, readers and so on.
Package utils provide common used functionality to work with files, readers and so on.
Package input provides access to embedded puzzles input files.
Package input provides access to embedded puzzles input files.
Package solutions registers solutions of puzzles.
Package solutions registers solutions of puzzles.
2015/day01
Package day01 contains solution for https://adventofcode.com/2015/day/1 puzzle.
Package day01 contains solution for https://adventofcode.com/2015/day/1 puzzle.
2015/day02
Package day02 contains solution for https://adventofcode.com/2015/day/2 puzzle.
Package day02 contains solution for https://adventofcode.com/2015/day/2 puzzle.
2015/day03
Package day03 contains solution for https://adventofcode.com/2015/day/3 puzzle.
Package day03 contains solution for https://adventofcode.com/2015/day/3 puzzle.
2016/day01
Package day01 contains solution for https://adventofcode.com/2016/day/1 puzzle.
Package day01 contains solution for https://adventofcode.com/2016/day/1 puzzle.
2016/day02
Package day02 contains solution for https://adventofcode.com/2016/day/2 puzzle.
Package day02 contains solution for https://adventofcode.com/2016/day/2 puzzle.
2017/day01
Package day01 contains solution for https://adventofcode.com/2017/day/1 puzzle.
Package day01 contains solution for https://adventofcode.com/2017/day/1 puzzle.
2017/day02
Package day02 contains solution for https://adventofcode.com/2017/day/2 puzzle.
Package day02 contains solution for https://adventofcode.com/2017/day/2 puzzle.
2018/day01
Package day01 contains solution for https://adventofcode.com/2018/day/1 puzzle.
Package day01 contains solution for https://adventofcode.com/2018/day/1 puzzle.
2018/day02
Package day02 contains solution for https://adventofcode.com/2018/day/2 puzzle.
Package day02 contains solution for https://adventofcode.com/2018/day/2 puzzle.
2019/day01
Package day01 contains solution for https://adventofcode.com/2019/day/1 puzzle.
Package day01 contains solution for https://adventofcode.com/2019/day/1 puzzle.
2019/day02
Package day02 contains solution for https://adventofcode.com/2019/day/2 puzzle.
Package day02 contains solution for https://adventofcode.com/2019/day/2 puzzle.
2019/day03
Package day03 contains solution for https://adventofcode.com/2019/day/3 puzzle.
Package day03 contains solution for https://adventofcode.com/2019/day/3 puzzle.
2019/day04
Package day04 contains solution for https://adventofcode.com/2019/day/4 puzzle.
Package day04 contains solution for https://adventofcode.com/2019/day/4 puzzle.
2020/day01
Package day01 contains solution for https://adventofcode.com/2020/day/1 puzzle.
Package day01 contains solution for https://adventofcode.com/2020/day/1 puzzle.
2020/day02
Package day02 contains solution for https://adventofcode.com/2020/day/2 puzzle.
Package day02 contains solution for https://adventofcode.com/2020/day/2 puzzle.
2021/day01
Package day01 contains solution for https://adventofcode.com/2021/day/1 puzzle.
Package day01 contains solution for https://adventofcode.com/2021/day/1 puzzle.
2021/day02
Package day02 contains solution for https://adventofcode.com/2021/day/2 puzzle.
Package day02 contains solution for https://adventofcode.com/2021/day/2 puzzle.
2021/day03
Package day03 contains solution for https://adventofcode.com/2021/day/3 puzzle.
Package day03 contains solution for https://adventofcode.com/2021/day/3 puzzle.
2021/day04
Package day04 contains solution for https://adventofcode.com/2021/day/4 puzzle.
Package day04 contains solution for https://adventofcode.com/2021/day/4 puzzle.
2021/day05
Package day05 contains solution for https://adventofcode.com/2021/day/5 puzzle.
Package day05 contains solution for https://adventofcode.com/2021/day/5 puzzle.
2021/day06
Package day06 contains solution for https://adventofcode.com/2021/day/6 puzzle.
Package day06 contains solution for https://adventofcode.com/2021/day/6 puzzle.
2021/day07
Package day07 contains solution for https://adventofcode.com/2021/day/7 puzzle.
Package day07 contains solution for https://adventofcode.com/2021/day/7 puzzle.
2022/day01
Package day01 contains solution for https://adventofcode.com/2022/day/1 puzzle.
Package day01 contains solution for https://adventofcode.com/2022/day/1 puzzle.
2023/day01
Package day01 contains solution for https://adventofcode.com/2023/day/1 puzzle.
Package day01 contains solution for https://adventofcode.com/2023/day/1 puzzle.

Jump to

Keyboard shortcuts

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