Spaces:
Running
Running
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)) |