-
Notifications
You must be signed in to change notification settings - Fork 0
/
dec1.go
67 lines (54 loc) · 1.07 KB
/
dec1.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
import "strconv"
func dec1() {
lines, _ := readLines("dec1.txt")
inv := readInventory(lines)
dec1_1(inv)
dec1_2(inv)
}
type inventory struct {
totalCals int
cals []int
}
func dec1_1(inv []inventory) {
println("dec1_1", inv[maxIndex(inv)].totalCals)
}
func dec1_2(inv []inventory) {
var maxs []inventory
for i := 0; i < 3; i++ {
maxIndex := maxIndex(inv)
maxs = append(maxs, inv[maxIndex])
inv = append(inv[:maxIndex], inv[maxIndex+1:]...)
}
var total int
for _, i := range maxs {
total = total + i.totalCals
}
println("dec1_2", total)
}
func maxIndex(inv []inventory) int {
var maxCals int
var maxIndex int
for i, x := range inv {
if x.totalCals > maxCals {
maxIndex = i
maxCals = x.totalCals
}
}
return maxIndex
}
func readInventory(lines []string) []inventory {
var inv []inventory
var i inventory
for _, line := range lines {
if line == "" {
inv = append(inv, i)
i = inventory{}
} else {
cals, _ := strconv.Atoi(line)
i.totalCals = i.totalCals + cals
i.cals = append(i.cals, cals)
}
}
return inv
}