44 lines
698 B
Go
44 lines
698 B
Go
package day01
|
|
|
|
import (
|
|
"sort"
|
|
"strings"
|
|
|
|
"adventofcode2022/utils"
|
|
)
|
|
|
|
type elf struct {
|
|
calories int
|
|
}
|
|
|
|
func Part1(input string) int {
|
|
elves := common(input)
|
|
return elves[0].calories
|
|
}
|
|
|
|
func Part2(input string) int {
|
|
elves := common(input)
|
|
return elves[0].calories + elves[1].calories + elves[2].calories
|
|
}
|
|
|
|
func common(input string) []elf {
|
|
lines := strings.Split(input, "\n")
|
|
|
|
elves := []elf{}
|
|
e := elf{}
|
|
for _, line := range lines {
|
|
if line == "" {
|
|
elves = append(elves, e)
|
|
e = elf{}
|
|
} else {
|
|
e.calories += utils.MustAtoi(line)
|
|
}
|
|
}
|
|
elves = append(elves, e)
|
|
|
|
sort.Slice(elves, func(i, j int) bool {
|
|
return elves[i].calories > elves[j].calories
|
|
})
|
|
|
|
return elves
|
|
} |