add day 01, part b

This commit is contained in:
Carlos Sousa 2024-12-03 00:36:55 +01:00
parent 9b24751f70
commit 6fcb639f28
2 changed files with 42 additions and 5 deletions

View File

@ -40,3 +40,6 @@ So, for these example lists, the similarity score at the end of this process is
Once again consider your left and right lists. What is their similarity score?
***
Puzzle answer is 24941624.

View File

@ -7,7 +7,8 @@ import (
utils "advent_of_code/utils"
)
const input_file_name = "puzzle_input"
const INPUT_FILE_NAME = "puzzle_input"
const FULL_VERBOSE = false
// Input is 2 arrays of lists of equal size
// Output is an array with each position distance AND the total of the distances
@ -26,15 +27,47 @@ func calculate_total_distance_between_lists(
difference = difference * -1
}
fmt.Println(list_a[index], list_b[index], difference)
if FULL_VERBOSE {
fmt.Println(list_a[index], list_b[index], difference)
}
far_apart_list = append(far_apart_list, difference)
total_far_apart += difference
}
fmt.Println("Total Far Apart:", total_far_apart)
return total_far_apart
}
// Outputs a map of [int keys] to int values
func create_occurence_map_from_list(
values_list []int,
) map[int]int {
occurence_map := make(map[int]int)
for _, number := range values_list {
occurence_map[number]++
}
return occurence_map
}
func calculate_similarity_score(
list_a []int,
similarity_score_map map[int]int,
) {
total_similarity_score := 0
for _, element := range list_a {
calculated_similarity_score := element * similarity_score_map[element]
if FULL_VERBOSE {
fmt.Println(calculated_similarity_score)
}
total_similarity_score += calculated_similarity_score
}
fmt.Println("Total Similarity Score:", total_similarity_score)
}
func main() {
input_file := utils.Load_input_file(input_file_name)
input_file := utils.Load_input_file(INPUT_FILE_NAME)
// Ensure the file is closed afterwards to prevent resource leaks
defer input_file.Close()
@ -43,11 +76,12 @@ func main() {
sort.Ints(list_a)
sort.Ints(list_b)
total_far_apart := calculate_total_distance_between_lists(
calculate_total_distance_between_lists(
list_a,
list_b,
)
fmt.Println("Total Far Apart:", total_far_apart)
occurence_map := create_occurence_map_from_list(list_b)
calculate_similarity_score(list_a, occurence_map)
}