aoc2015/day24/day.go
Stefan Harmuth 32486160f0 day24
2021-01-15 08:39:54 +01:00

45 lines
960 B
Go

package day24
import (
"math"
"tools"
)
func findMinQE(packageWeights []int, weightPerCompartment int) int {
var results [][]int
for i := 1; i < len(packageWeights); i++ {
for _, comb := range tools.CombinationsInt(packageWeights, i) {
if tools.Sum(comb...) == weightPerCompartment {
results = append(results, comb)
}
}
if len(results) > 0 {
break
}
}
minQE := math.MaxInt64
for _, result := range results {
thisQE := tools.Mul(result...)
if thisQE < minQE {
minQE = thisQE
}
}
return minQE
}
func Part1(puzzle tools.AoCPuzzle) interface{} {
packageWeights := puzzle.GetInputArrayInt()
weightPerCompartment := tools.Sum(packageWeights...) / 3
return findMinQE(packageWeights, weightPerCompartment)
}
func Part2(puzzle tools.AoCPuzzle) interface{} {
packageWeights := puzzle.GetInputArrayInt()
weightPerCompartment := tools.Sum(packageWeights...) / 4
return findMinQE(packageWeights, weightPerCompartment)
}