From 18f1bb5698b7d8f8fa563c43703f56a4c13fc1ef Mon Sep 17 00:00:00 2001 From: g3po Date: Sun, 1 Dec 2024 13:25:22 +0100 Subject: [PATCH] feat: Finish day 1 --- cmd/01/01.go | 5 +++-- internal/day01/handle.go | 25 +++++++++++++++++++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/cmd/01/01.go b/cmd/01/01.go index 4a6cfe7..70018d5 100644 --- a/cmd/01/01.go +++ b/cmd/01/01.go @@ -7,6 +7,7 @@ import ( func main() { input := common.LoadInputs("01_1.txt") - result := day01.Handle(input) - println(result) + result1, result2 := day01.Handle(input) + println(result1) + println(result2) } diff --git a/internal/day01/handle.go b/internal/day01/handle.go index 350061c..d37f9fd 100644 --- a/internal/day01/handle.go +++ b/internal/day01/handle.go @@ -8,10 +8,13 @@ import ( "aoc2024/internal/common" ) -func Handle(input []string) int { +func Handle(input []string) (int, int) { list1 := make([]int, len(input)) list2 := make([]int, len(input)) + map1 := map[int]int{} + map2 := map[int]int{} distance := 0 + similariry := 0 for i, line := range input { cols := strings.Split(line, " ") @@ -28,8 +31,26 @@ func Handle(input []string) int { }) for i, v := range list1 { + if _, ok := map1[v]; !ok { + map1[v] = 1 + } else { + map1[v] += 1 + } + if _, ok := map2[list2[i]]; !ok { + map2[list2[i]] = 1 + } else { + map2[list2[i]] += 1 + } distance = distance + int((math.Abs(float64(v - list2[i])))) } - return distance + for k, v := range map1 { + map2Value := 0 + if value, ok := map2[k]; ok { + map2Value = value + } + similariry += (k * map2Value) * v + } + + return distance, similariry }