advent24-llm / day01 /solution_claude-3-5-sonnet-20241022.py
jerpint's picture
Add solution files
a4da721
def read_lists(filename):
left = []
right = []
with open(filename, 'r') as f:
for line in f:
l, r = line.strip().split()
left.append(int(l))
right.append(int(r))
return left, right
def calculate_distance(left, right):
# Sort both lists
sorted_left = sorted(left)
sorted_right = sorted(right)
# Calculate total distance
total_distance = 0
for l, r in zip(sorted_left, sorted_right):
total_distance += abs(l - r)
return total_distance
def calculate_similarity(left, right):
# Count occurrences in right list
right_counts = {}
for num in right:
right_counts[num] = right_counts.get(num, 0) + 1
# Calculate similarity score
total_similarity = 0
for num in left:
# Multiply number by its occurrences in right list
total_similarity += num * right_counts.get(num, 0)
return total_similarity
# Read input
left_list, right_list = read_lists("./input.txt")
# Part 1
distance = calculate_distance(left_list, right_list)
print(str(distance))
# Part 2
similarity = calculate_similarity(left_list, right_list)
print(str(similarity))