]> fbox.kageds.com Git - adventofcode.git/blob - 2022/go/day01/day01.go
20223 day1
[adventofcode.git] / 2022 / go / day01 / day01.go
1 package day01
2
3 import (
4 "sort"
5 "strings"
6
7 "adventofcode2022/utils"
8 )
9
10 type elf struct {
11 calories int
12 }
13
14 func Part1(input string) int {
15 elves := common(input)
16 return elves[0].calories
17 }
18
19 func Part2(input string) int {
20 elves := common(input)
21 return elves[0].calories + elves[1].calories + elves[2].calories
22 }
23
24 func common(input string) []elf {
25 lines := strings.Split(input, "\n")
26
27 elves := []elf{}
28 e := elf{}
29 for _, line := range lines {
30 if line == "" {
31 elves = append(elves, e)
32 e = elf{}
33 } else {
34 e.calories += utils.MustAtoi(line)
35 }
36 }
37 elves = append(elves, e)
38
39 sort.Slice(elves, func(i, j int) bool {
40 return elves[i].calories > elves[j].calories
41 })
42
43 return elves
44 }