Initial commit with days 1 to 4.
This commit is contained in:
32
day1/solver.py
Normal file
32
day1/solver.py
Normal file
@@ -0,0 +1,32 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user