Spaces:
Running
Running
File size: 1,191 Bytes
a4da721 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
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)) |