aoc2015/day20/day.go
Stefan Harmuth 81562d7441 day20
2020-12-31 10:37:23 +01:00

55 lines
952 B
Go

package day20
import (
"math"
"tools"
)
func Part1(puzzle tools.AoCPuzzle) interface{} {
target := puzzle.GetInputArrayInt()[0]
presents := 0
houseNumber := 0
for presents < target {
houseNumber++
divisor := tools.NewSet()
for i := 1; i <= int(math.Sqrt(float64(houseNumber))); i++ {
if houseNumber%i == 0 {
divisor.Add(i)
divisor.Add(houseNumber / i)
}
}
presents = 0
for v := range divisor {
presents += v.(int) * 10
}
}
return houseNumber
}
func Part2(puzzle tools.AoCPuzzle) interface{} {
target := puzzle.GetInputArrayInt()[0]
presents := 0
houseNumber := 0
for presents < target {
houseNumber++
divisor := tools.NewSet()
for i := 1; i <= int(math.Sqrt(float64(houseNumber))); i++ {
if houseNumber%i == 0 {
divisor.Add(houseNumber / i)
}
}
presents = 0
for v := range divisor {
if houseNumber/v.(int) < 50 {
presents += v.(int) * 11
}
}
}
return houseNumber
}