You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

39 lines
758 B

import aoclib
inp = aoclib.get_input(3, parser=aoclib.parse_lines_with_type_and_default(
typ=lambda l: (l[: len(l)//2], l[len(l)//2:]), default=None))
def letter_value(x: str):
if x.isupper():
return ord(x) - 38
else:
return ord(x) - 96
def part1():
total = 0
for one, two in inp:
both = set(one).intersection(set(two))
for thing in both:
total += letter_value(thing)
return total
def part2():
a = inp
a = [x + y for x, y in a]
total = 0
for i in range(0, len(a), 3):
common = set(a[i]).intersection(set(a[i+1])).intersection(set(a[i+2]))
for thing in common:
total += letter_value(thing)
return total
aoclib.main(part1, part2)