Imports #
"errors"
"io"
"sort"
"sync"
"context"
"io"
"sort"
"sync"
"errors"
"io"
"sort"
"sync"
"context"
"io"
"sort"
"sync"
Package Errors Errors returned by the solver can be tested againts these errors using errors.Is
var ErrInvalidInput = *ast.CallExpr
Package Errors Errors returned by the solver can be tested againts these errors using errors.Is
var ErrTimeout = *ast.CallExpr
Package Errors Errors returned by the solver can be tested againts these errors using errors.Is
var ErrUnknownPart = *ast.CallExpr
Keys of the solvers, sorted
var keys []string
Keys of the solvers with context support, sorted
var keysCtx []string
Mutex guarding access to registry
var mu sync.RWMutex
Mutex guarding access to registry of solvers with context support
var muCtx sync.RWMutex
Registry of solvers
var registry = map[string]RegistryItem{...}
Registry of solvers with context support
var registryCtx = map[string]RegistryItemWithCtx{...}
Interface of Puzzle Solver
type PuzzleSolver interface {
Init(reader io.Reader) error
Solve(part int) (string, error)
}
Interface of Puzzle Solver with context support
type PuzzleSolverWithCtx interface {
PuzzleSolver
InitCtx(ctx context.Context, reader io.Reader) error
SolveCtx(ctx context.Context, part int) (string, error)
}
Interface of Puzzle Solver supporting stepwise solving
type Stepper interface {
PuzzleSolver
Next() (string, error)
}
Interface of Puzzle Solver with support for context and stepwise solving
type StepperWithCtx interface {
PuzzleSolverWithCtx
Next(ctx context.Context) (string, error)
}
Registered solver
type RegistryItem struct {
Name string
Next bool
Constructor func() PuzzleSolver
}
Registered solver for export purposes
type RegistryItemPublic struct {
Name string `json:"name"`
Next bool `json:"next"`
}
Registered solver with context support
type RegistryItemWithCtx struct {
Name string
Next bool
Constructor func() PuzzleSolverWithCtx
}
Lists registered keys
func ListRegistryItems() []RegistryItemPublic
Lists registered keys of solvers with context support
func ListRegistryItemsWithCtx() []RegistryItemPublic
Factory for solvers
func New(name string) (PuzzleSolver, bool)
Factory for solvers with context
func NewWithCtx(name string) (PuzzleSolverWithCtx, bool)
Registers a solver and check for supported interfaces Keeps the keys ordered
func Register(name string, constructor func() PuzzleSolver)
Registers a solver and check for supported interfaces Keeps the keys ordered
func RegisterWithCtx(name string, constructor func() PuzzleSolverWithCtx)