Skip to content

Commit 1f35ded

Browse files
committed
Solve 2024 day 1 part A
1 parent a7de15e commit 1f35ded

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

src/2024/day01/go/main.go

+46-2
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,59 @@ func calculateDistances(input *os.File) (int, error) {
4444
return sum, nil
4545
}
4646

47+
func similarityScore(input *os.File) (int, error) {
48+
scanner := bufio.NewScanner(input)
49+
sum := 0
50+
a := make([]int, 0)
51+
b := make([]int, 0)
52+
for scanner.Scan() {
53+
line := scanner.Text()
54+
first := strings.Split(line, " ")[0]
55+
firstN, err := strconv.Atoi(first)
56+
if err != nil {
57+
log.Fatal(err)
58+
}
59+
second := strings.Split(line, " ")[1]
60+
secondN, err := strconv.Atoi(second)
61+
if err != nil {
62+
log.Fatal(err)
63+
}
64+
a = append(a, firstN)
65+
b = append(b, secondN)
66+
}
67+
sort.Slice(a, func(i, j int) bool {
68+
return a[i] < a[j]
69+
})
70+
sort.Slice(b, func(i, j int) bool {
71+
return b[i] < b[j]
72+
})
73+
for _, left := range a {
74+
count := 0
75+
for _, right := range b {
76+
if left == right {
77+
count++
78+
}
79+
}
80+
sum += left * count
81+
}
82+
return sum, nil
83+
}
84+
4785
func main() {
4886
input, err := os.Open("input.txt")
4987
if err != nil {
5088
log.Fatal(err)
5189
}
5290
defer input.Close()
53-
sum, err := calculateDistances(input)
91+
distances, err := calculateDistances(input)
92+
if err != nil {
93+
log.Fatal(err)
94+
}
95+
input.Seek(0, 0)
96+
similarityScore, err := similarityScore(input)
5497
if err != nil {
5598
log.Fatal(err)
5699
}
57-
fmt.Println(sum)
100+
fmt.Println(distances)
101+
fmt.Println(similarityScore)
58102
}

0 commit comments

Comments
 (0)