summaryrefslogtreecommitdiffstats
path: root/day6/__init__.py
blob: f9d4f878ac7bec7f637a95be71b6b12039faa021 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from typing import Iterator, Any, Generator, List

from aoc import BaseAssignment


class Assignment(BaseAssignment):
    def read_input(self, example = False) -> Generator:
        group = []
        for line in super().read_input(example):
            if len(line) == 0:
                yield group
                group = []
                continue

            group.append(line)

        yield group


class AssignmentOne(Assignment):
    def run(self, input: Iterator) -> Any:
        return sum([
            len(set(''.join(group)))
            for group in input
        ])


class AssignmentTwo(Assignment):
    def everyone_same_answer_count(self, group: List):
        answer_count = {}
        for person in group:
            for answer in person:
                answer_count[answer] = answer_count[answer] + 1 \
                    if answer in answer_count \
                    else 1
        return sum([
            1
            for value in answer_count.values()
            if value == len(group)
        ])


    def run(self, input: Iterator) -> Any:
        return sum([
            self.everyone_same_answer_count(group)
            for group in input
        ])