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 }