55 lines
1.0 KiB
Go
55 lines
1.0 KiB
Go
package day01
|
|
|
|
import (
|
|
"adventofcode2024/utils"
|
|
"sort"
|
|
"strings"
|
|
)
|
|
|
|
func Part1(input string) int {
|
|
var list1, list2 []int
|
|
|
|
num := 0
|
|
lines := strings.Split(input, "\n")
|
|
for _, line := range lines {
|
|
fields := strings.Fields(line)
|
|
// Convert the fields to integers
|
|
val1 := utils.MustAtoi(fields[0])
|
|
val2 := utils.MustAtoi(fields[1])
|
|
|
|
// Append to the respective slices
|
|
list1 = append(list1, val1)
|
|
list2 = append(list2, val2)
|
|
}
|
|
sort.Ints(list1)
|
|
sort.Ints(list2)
|
|
for i := 0; i < len(list1); i++ {
|
|
num += utils.Abs(list1[i] - list2[i])
|
|
}
|
|
return num
|
|
|
|
}
|
|
|
|
func Part2(input string) int {
|
|
var list1 []int
|
|
list2 := make(map[int]int)
|
|
|
|
|
|
num := 0
|
|
lines := strings.Split(input, "\n")
|
|
for _, line := range lines {
|
|
fields := strings.Fields(line)
|
|
// Convert the fields to integers
|
|
val1 := utils.MustAtoi(fields[0])
|
|
val2 := utils.MustAtoi(fields[1])
|
|
|
|
// Append to the respective slices
|
|
list1 = append(list1, val1)
|
|
list2[val2]++
|
|
}
|
|
for i := 0; i < len(list1); i++ {
|
|
num += list1[i] * list2[list1[i]]
|
|
}
|
|
return num
|
|
}
|