This commit is contained in:
Gareth
2024-12-02 12:52:40 +00:00
parent ab9bdc63b1
commit c133fe757c
6 changed files with 1114 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
package day01
import (
"math"
"sort"
"strconv"
"strings"
)
func Part1(input string) int {
var leftList, rightList []float64
total := 0.0
lines := strings.Split(input, "\n")
for _, line := range lines {
sides := strings.Fields(line)
leftNum, _ := strconv.ParseFloat(sides[0], 64)
rightNum, _ := strconv.ParseFloat(sides[1], 64)
leftList = append(leftList, leftNum)
rightList = append(rightList, rightNum)
}
sort.Float64s(leftList)
sort.Float64s(rightList)
for i := 0; i < len(leftList); i++ {
total += math.Abs(leftList[i] - rightList[i])
}
return int(total)
}
func Part2(input string) int {
var leftList, rightList []int
lines := strings.Split(input, "\n")
for _, line := range lines {
sides := strings.Fields(line)
leftNum, _ := strconv.Atoi(sides[0])
rightNum, _ := strconv.Atoi(sides[1])
leftList = append(leftList, leftNum)
rightList = append(rightList, rightNum)
}
counts := make(map[int]int)
for _, num := range rightList {
counts[num]++
}
similarityScore := 0
for _, num := range leftList {
similarityScore += num * counts[num]
}
return similarityScore
}

View File

@@ -0,0 +1,27 @@
package day01
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestPart1(t *testing.T) {
r := Part1(`3 4
4 3
2 5
1 3
3 9
3 3`)
assert.Equal(t, 11, r)
}
func TestPart2(t *testing.T) {
r := Part2(`3 4
4 3
2 5
1 3
3 9
3 3`)
assert.Equal(t, 31, r)
}

1000
2024/gareth/day01/input.txt Normal file

File diff suppressed because it is too large Load Diff