Files
aoc2024/day1/solver.py

33 lines
736 B
Python

from collections import defaultdict
def part1():
first, second = read_ids()
distance = sum(abs(id1 - id2) for id1, id2 in zip(first, second))
print(f"Total distance is: {distance}")
def part2():
first, second = read_ids()
# Make freqmap for second list
freq = defaultdict(int)
for id in second:
freq[id] += 1
# Sum first list weighted by freqmap
similarity = sum(freq[id] * id for id in first)
print(f"Similarity is {similarity}")
def read_ids():
idlist = []
with open("id-list") as f:
for line in f:
if line:
idlist.append(map(int, line.split()))
return map(sorted, zip(*idlist))
if __name__ == '__main__':
part1()
part2()