Add 2024 day1
This commit is contained in:
		
							
								
								
									
										43
									
								
								2024/day1.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								2024/day1.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
from collections import Counter
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def part_one(left_list: list, right_list: list) -> int:
 | 
			
		||||
    left_list.sort()
 | 
			
		||||
    right_list.sort()
 | 
			
		||||
 | 
			
		||||
    diffs = []
 | 
			
		||||
    for left, right in zip(left_list, right_list):
 | 
			
		||||
        diffs.append(abs(left - right))
 | 
			
		||||
 | 
			
		||||
    return sum(diffs)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def part_two(left_list: list, right_list: list) -> int:
 | 
			
		||||
    right_counter = Counter(right_list)
 | 
			
		||||
 | 
			
		||||
    similarity_score = 0
 | 
			
		||||
    for left in left_list:
 | 
			
		||||
        if left in right_counter:
 | 
			
		||||
            similarity_score += left * right_counter[left]
 | 
			
		||||
 | 
			
		||||
    return similarity_score
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    with open("day1") as file:
 | 
			
		||||
        lines = file.readlines()
 | 
			
		||||
 | 
			
		||||
    left_list = []
 | 
			
		||||
    right_list = []
 | 
			
		||||
    for line in lines:
 | 
			
		||||
        left, right = line.split()
 | 
			
		||||
        left_list.append(int(left))
 | 
			
		||||
        right_list.append(int(right))
 | 
			
		||||
 | 
			
		||||
    print(part_one(left_list, right_list))
 | 
			
		||||
    print(part_two(left_list, right_list))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    main()
 | 
			
		||||
		Reference in New Issue
	
	Block a user