diff options
Diffstat (limited to '2022/01')
| -rw-r--r-- | 2022/01/calories/elfs.go (renamed from 2022/01/elfs.go) | 33 | ||||
| -rw-r--r-- | 2022/01/main.go | 26 |
2 files changed, 35 insertions, 24 deletions
diff --git a/2022/01/elfs.go b/2022/01/calories/elfs.go index b13dbd3..2011fc8 100644 --- a/2022/01/elfs.go +++ b/2022/01/calories/elfs.go @@ -1,4 +1,35 @@ -package main +package calories + +import ( + "context" + "strconv" +) + +type solver func(ctx context.Context, data []int) ([]int, error) + +var ( + Reader = readCaloriesInts + Solvers = []solver{partOne, partTwo} +) + +func partOne(ctx context.Context, data []int) ([]int, error) { + return biggestElf(data), nil +} + +func partTwo(ctx context.Context, data []int) ([]int, error) { + return []int{sum(biggestElf(data))}, nil +} + +func readCaloriesInts(line string) (int, error) { + if len(line) == 0 { + return -1, nil + } + if i, err := strconv.Atoi(line); err != nil { + return 0, err + } else { + return i, nil + } +} func biggestElf(data []int) []int { topThree := make([]int, 3) diff --git a/2022/01/main.go b/2022/01/main.go index 3b8ac4c..51d5750 100644 --- a/2022/01/main.go +++ b/2022/01/main.go @@ -2,38 +2,18 @@ package main import ( "context" - "strconv" + "mvinkio.online/aoc/2022/01/calories" "mvinkio.online/aoc/aoc" ) -func readCaloriesInts(line string) (int, error) { - if len(line) == 0 { - return -1, nil - } - if i, err := strconv.Atoi(line); err != nil { - return 0, err - } else { - return i, nil - } -} - -func PartOne(ctx context.Context, data []int) ([]int, error) { - return biggestElf(data), nil -} - -func PartTwo(ctx context.Context, data []int) ([]int, error) { - return []int{sum(biggestElf(data))}, nil -} - // Boilerplate func main() { aoc.RunDay( context.TODO(), aoc.NewScanCloser("2022/01/input.txt"), - aoc.ReadByLine(readCaloriesInts), - PartOne, - PartTwo, + aoc.ReadByLine(calories.Reader), + calories.Solvers..., ) } |
