From 81562d744133eb5d3d2654f8e2c4a1f36b8ad2a6 Mon Sep 17 00:00:00 2001 From: Stefan Harmuth Date: Thu, 31 Dec 2020 10:37:23 +0100 Subject: [PATCH] day20 --- day20/day.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ inputs/20 | 1 + inputs/20_test | 1 + main.go | 2 ++ 4 files changed, 58 insertions(+) create mode 100644 day20/day.go create mode 100644 inputs/20 create mode 100644 inputs/20_test diff --git a/day20/day.go b/day20/day.go new file mode 100644 index 0000000..e42fa68 --- /dev/null +++ b/day20/day.go @@ -0,0 +1,54 @@ +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 +} diff --git a/inputs/20 b/inputs/20 new file mode 100644 index 0000000..f1b40a7 --- /dev/null +++ b/inputs/20 @@ -0,0 +1 @@ +34000000 \ No newline at end of file diff --git a/inputs/20_test b/inputs/20_test new file mode 100644 index 0000000..b6da794 --- /dev/null +++ b/inputs/20_test @@ -0,0 +1 @@ +4650 \ No newline at end of file diff --git a/main.go b/main.go index 36747d0..2d47c5b 100644 --- a/main.go +++ b/main.go @@ -20,6 +20,7 @@ import ( "aoc2015/day17" "aoc2015/day18" "aoc2015/day19" + "aoc2015/day20" "flag" "fmt" "os" @@ -56,6 +57,7 @@ func initDayFunctions() { 17: {1: day17.Part1, 2: day17.Part2}, 18: {1: day18.Part1, 2: day18.Part2}, 19: {1: day19.Part1, 2: day19.Part2}, + 20: {1: day20.Part1, 2: day20.Part2}, } }