refactor: massive refactor to have only one binary to call

This commit is contained in:
2025-11-26 14:03:32 +01:00
parent 314da54495
commit 3723f84d1a
41 changed files with 272 additions and 188 deletions

View File

@@ -0,0 +1,42 @@
package registry
import (
"fmt"
"os"
)
type Runner interface {
Run(input string, part string)
}
type DayRunner[T any] struct {
ParseInput func(string) T
PartOne func(T) int
PartTwo func(T) int
}
func (r *DayRunner[T]) Run(input string, part string) {
data := r.ParseInput(input)
switch part {
case "":
fmt.Println(r.PartOne(data))
fmt.Println(r.PartTwo(data))
case "1":
fmt.Println(r.PartOne(data))
case "2":
fmt.Println(r.PartTwo(data))
default:
fmt.Fprintf(os.Stderr, "Invalid part: %s\n", part)
os.Exit(1)
}
}
var Days = make(map[string]any)
func Register[T any](key string, parseInput func(string) T, partOne func(T) int, partTwo func(T) int) {
Days[key] = &DayRunner[T]{
ParseInput: parseInput,
PartOne: partOne,
PartTwo: partTwo,
}
}