From d0195ce05c8c6e1d15baab740754674b9e78e61f Mon Sep 17 00:00:00 2001 From: NimVek Date: Sun, 12 Nov 2023 16:16:20 +0100 Subject: [PATCH] add 2020 day 6 --- README.md | 2 +- y2020/d06/__init__.py | 3 +++ y2020/d06/cases/example.11.6.txt | 15 +++++++++++++ y2020/d06/cases/example.6..txt | 3 +++ y2020/d06/solution.py | 37 ++++++++++++++++++++++++++++++++ 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 y2020/d06/__init__.py create mode 100644 y2020/d06/cases/example.11.6.txt create mode 100644 y2020/d06/cases/example.6..txt create mode 100644 y2020/d06/solution.py diff --git a/README.md b/README.md index 074d434..8b540bc 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![AoC 2017](https://img.shields.io/badge/2017-★_24-bcb01b)](https://adventofcode.com/2017) [![AoC 2018](https://img.shields.io/badge/2018-★_9-fb7938)](https://adventofcode.com/2018) [![AoC 2019](https://img.shields.io/badge/2019-★_6-f26e3c)](https://adventofcode.com/2019) -[![AoC 2020](https://img.shields.io/badge/2020-★_4-ec683f)](https://adventofcode.com/2020) +[![AoC 2020](https://img.shields.io/badge/2020-★_6-f26e3c)](https://adventofcode.com/2020) [![AoC 2021](https://img.shields.io/badge/2021-★_50-44cc11)](https://adventofcode.com/2021) [![AoC 2022](https://img.shields.io/badge/2022-★_50-44cc11)](https://adventofcode.com/2022) [![AoC 2023](https://img.shields.io/badge/2023-★_0-9f9f9f)](https://adventofcode.com/2023) diff --git a/y2020/d06/__init__.py b/y2020/d06/__init__.py new file mode 100644 index 0000000..25755bb --- /dev/null +++ b/y2020/d06/__init__.py @@ -0,0 +1,3 @@ +__year__ = 2020 +__day__ = 6 +__title__ = "Custom Customs" diff --git a/y2020/d06/cases/example.11.6.txt b/y2020/d06/cases/example.11.6.txt new file mode 100644 index 0000000..0f5b3bc --- /dev/null +++ b/y2020/d06/cases/example.11.6.txt @@ -0,0 +1,15 @@ +abc + +a +b +c + +ab +ac + +a +a +a +a + +b diff --git a/y2020/d06/cases/example.6..txt b/y2020/d06/cases/example.6..txt new file mode 100644 index 0000000..a1bf3ea --- /dev/null +++ b/y2020/d06/cases/example.6..txt @@ -0,0 +1,3 @@ +abcx +abcy +abcz diff --git a/y2020/d06/solution.py b/y2020/d06/solution.py new file mode 100644 index 0000000..6511c28 --- /dev/null +++ b/y2020/d06/solution.py @@ -0,0 +1,37 @@ +import functools +import operator + +from aoc.lib.solution import SolutionBase + +import logging + + +__all__ = ["Solution"] +__log__ = logging.getLogger(__name__) + + +class Solution(SolutionBase): + @staticmethod + def prepare(data): + if not any(isinstance(entry, list) for entry in data): + data = [data] + result = [] + for entry in data: + if isinstance(entry, str): + result.append([set(entry)]) + else: + result.append([set(e) for e in entry]) + return tuple(result) + + @staticmethod + def generic(data, function): + return sum(len(functools.reduce(function, entry)) for entry in data) + + part_01 = functools.partial(generic, function=operator.__or__) + part_02 = functools.partial(generic, function=operator.__and__) + + +if __name__ == "__main__": + import aoc.lib.main + + aoc.lib.main.main(Solution)