Advent of Code 2022 day 3
There is definitely a saner way to do part 2 using itertools
, but the
threes
hack also worked.
with open("3.txt") as f: lines = f.read().splitlines() def value(x): if x.islower(): return ord(x) - 96 return ord(x) - 38 def in_line(l): return value( set(l[:int(len(l)/2)]).intersection(set(l[int(len(l)/2):])).pop() ) def in_lines(l1, l2, l3): return value(set(l1).intersection(set(l2), set(l3)).pop()) def threes(lines): l = [] count = 0 for line in lines: if count == 3: yield l l = [] count = 0 l.append(line) count += 1 yield l print(sum([in_line(line) for line in lines if line])) print(sum([in_lines(l1, l2, l3) for l1, l2, l3 in threes(lines)]))