41 lines
802 B
Go
41 lines
802 B
Go
package day17
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
"tools"
|
|
)
|
|
|
|
func getCombinations(containers []int, sum int) (combinations [][]int) {
|
|
for i, c := range containers {
|
|
if c > sum {
|
|
break
|
|
} else if c == sum {
|
|
return [][]int{{c}}
|
|
} else if i == len(containers)-1 {
|
|
break
|
|
}
|
|
subCombinations := getCombinations(containers[i:], sum-c)
|
|
for _, v := range subCombinations {
|
|
subCombination := append([]int{c}, v...)
|
|
combinations = append(combinations, subCombination)
|
|
}
|
|
}
|
|
return combinations
|
|
}
|
|
|
|
func Part1(puzzle tools.AoCPuzzle) interface{} {
|
|
input := puzzle.GetInputArrayInt()
|
|
sort.Ints(input)
|
|
|
|
combos25 := getCombinations(input, 25)
|
|
fmt.Println(combos25)
|
|
//combos150 := getCombinations(input, 150)
|
|
|
|
return len(combos25)
|
|
}
|
|
|
|
func Part2(puzzle tools.AoCPuzzle) interface{} {
|
|
return 0
|
|
}
|