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.
43 lines
990 B
43 lines
990 B
3 years ago
|
import sys
|
||
|
import typing
|
||
|
|
||
|
|
||
|
def main() -> int:
|
||
|
counts_sum = sum([c for c in _iter_group_counts(sys.stdin)])
|
||
|
print(f"counts_sum={counts_sum}")
|
||
|
|
||
|
return 0
|
||
|
|
||
|
|
||
|
def _iter_group_counts(instream: typing.TextIO) -> typing.Generator[int, None, None]:
|
||
3 years ago
|
for i, group in enumerate(_iter_groups(instream)):
|
||
|
answers = set(list(group[0]))
|
||
|
print(f"i={i} initial={answers}")
|
||
|
|
||
|
for answers_text in group[1:]:
|
||
|
to_add = set(list(answers_text))
|
||
|
answers = answers.intersection(set(list(answers_text)))
|
||
|
print(f"i={i} added={to_add} result={answers}")
|
||
|
|
||
|
print(f"i={i} final={answers} n={len(answers)}")
|
||
|
yield len(answers)
|
||
|
|
||
|
|
||
|
def _iter_groups(instream):
|
||
|
cur_group = []
|
||
|
|
||
3 years ago
|
for line in instream:
|
||
|
line = line.strip()
|
||
|
if line == "":
|
||
3 years ago
|
yield cur_group
|
||
|
cur_group = []
|
||
|
continue
|
||
|
|
||
|
cur_group.append(line)
|
||
3 years ago
|
|
||
3 years ago
|
yield cur_group
|
||
3 years ago
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
sys.exit(main())
|