advent-of-code/2020/Python/day06.py
2020-12-06 09:29:30 +01:00

49 lines
1.1 KiB
Python

import functools
def parse_input() -> list[list[str]]:
groups = [[]]
with open("input.txt") as file:
for line in file:
line_ = line.rstrip()
if len(line_) > 0:
groups[-1].append(line_)
else:
if not groups[-1] == []:
groups.append([])
return groups
def solve_p1(groups: list[list[str]]) -> int:
def count(group: list[str]) -> int:
chars = set()
for line in group:
for char in line:
chars.add(char)
return len(chars)
return sum(map(count, groups))
def solve_p2(groups: list[list[str]]) -> int:
def count_intersection(group: list[str]) -> int:
sets = []
for line in group:
new_set = set()
for char in line:
new_set.add(char)
sets.append(new_set)
result_set = functools.reduce(set.intersection, sets)
return len(result_set)
return sum(map(count_intersection, groups))
GROUPS = parse_input()
print(solve_p1(GROUPS))
print(solve_p2(GROUPS))