Skip to content

Commit 0338591

Browse files
committed
chore(aoc-2024): day1 part 2
Signed-off-by: Márk Kővári <kovarimarkofficial@gmail.com>
1 parent 7b15404 commit 0338591

2 files changed

Lines changed: 47 additions & 0 deletions

File tree

2024/cmd/01.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,16 @@ func sortInput(left, right []int64) ([]int64, []int64) {
4141
return left, right
4242
}
4343

44+
func getDistancesWithSimilarity(left, right []int64) []int64 {
45+
similarity := getSimilarity(right)
46+
distances := make([]int64, 0)
47+
for i := 0; i < len(left); i++ {
48+
value := left[i] * int64(similarity[left[i]])
49+
distances = append(distances, value)
50+
}
51+
return distances
52+
}
53+
4454
func getDistances(left, right []int64) []int64 {
4555
distances := make([]int64, 0)
4656
for i := 0; i < len(left); i++ {
@@ -57,3 +67,16 @@ func sumDistances(distances []int64) int {
5767
}
5868
return sum
5969
}
70+
71+
func getSimilarity(numbers []int64) map[int64]int {
72+
similarity := make(map[int64]int)
73+
for _, number := range numbers {
74+
if _, ok := similarity[number]; ok {
75+
similarity[number]++
76+
} else {
77+
similarity[number] = 1
78+
}
79+
}
80+
81+
return similarity
82+
}

2024/cmd/01_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,18 @@ func TestExample(t *testing.T) {
1515
}
1616
}
1717

18+
func TestExampleSecond(t *testing.T) {
19+
left, right, err := readFile("../data/01/example")
20+
if err != nil {
21+
t.Fatalf("Error reading file: %v", err)
22+
}
23+
distances := getDistancesWithSimilarity(left, right)
24+
distanceSum := sumDistances(distances)
25+
if distanceSum != 31 {
26+
t.Fatalf("Expected 31, got %d", distanceSum)
27+
}
28+
}
29+
1830
func TestInput(t *testing.T) {
1931
left, right, err := readFile("../data/01/input")
2032
if err != nil {
@@ -27,3 +39,15 @@ func TestInput(t *testing.T) {
2739
t.Fatalf("Expected 1970720, got %d", distanceSum)
2840
}
2941
}
42+
43+
func TestInputSecond(t *testing.T) {
44+
left, right, err := readFile("../data/01/input")
45+
if err != nil {
46+
t.Fatalf("Error reading file: %v", err)
47+
}
48+
distances := getDistancesWithSimilarity(left, right)
49+
distanceSum := sumDistances(distances)
50+
if distanceSum != 17191599 {
51+
t.Fatalf("Expected 17191599, got %d", distanceSum)
52+
}
53+
}

0 commit comments

Comments
 (0)