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))