30 lines
669 B
Python
30 lines
669 B
Python
from functools import reduce
|
|
|
|
with open('input') as f:
|
|
data = [line.strip().split() for line in f.read().split('\n\n')]
|
|
|
|
def parse_data(data):
|
|
groups = []
|
|
for line in data:
|
|
group = []
|
|
for answers in line:
|
|
group.append(set(answers))
|
|
groups.append(group)
|
|
return groups
|
|
|
|
def solve_a(groups):
|
|
union = lambda a, b: a | b
|
|
count = lambda g: len(reduce(union, g))
|
|
return sum(map(count, groups))
|
|
|
|
|
|
def solve_b(data):
|
|
intersection = lambda a, b: a & b
|
|
count = lambda g: len(reduce(intersection, g))
|
|
return sum(map(count, groups))
|
|
|
|
|
|
groups = parse_data(data)
|
|
print(solve_a(groups))
|
|
print(solve_b(groups))
|