diff --git a/2022/day2.py b/2022/day2.py new file mode 100644 index 0000000..4527944 --- /dev/null +++ b/2022/day2.py @@ -0,0 +1,23 @@ +# -*- encoding: utf-8 -*- + +from pathlib import Path + +with open(Path(__file__).parent.joinpath("inputs", "day2.txt")) as fp: + values = [ + (ord(row[0]) - ord("A"), ord(row[2]) - ord("X")) for row in fp.readlines() + ] + + +def score_1(ux: int, vx: int) -> int: + return 1 + vx + ((1 - ((ux - vx) % 3)) % 3) * 3 + + +def score_2(ux: int, vx: int) -> int: + return (ux + vx - 1) % 3 + 1 + vx * 3 + + +# part 1 - 13526 +print(f"score 1 is {sum(score_1(*v) for v in values)}") + +# part 2 - 14204 +print(f"score 2 is {sum(score_2(*v) for v in values)}") diff --git a/2022/inputs/day2.txt b/2022/inputs/day2.txt new file mode 100644 index 0000000..79dbbc9 --- /dev/null +++ b/2022/inputs/day2.txt @@ -0,0 +1,2500 @@ +C Y +C Z +B Z +A Z +A Z +A Y +A Z +C Y +C Z +A Y +A Y +B X +A Y +C Z +C Z +B X +C Z +A Z +B Y +C Z +A Y +C X +B Y +A Z +B Y +C Z +B Z +B Y +C Z +A Z +A Z +B Z +C Z +A X +B X +C Y +C Z +C Z +C Z +A Y +C Z +C Z +C Z +C X +A Z +A Z +C Y +A Z +C Z +C Z +C Z +A Z +B Y +C Z +A Z +B Z +A Z +A Y +B X +B X +C Z +C X +C Z +C Z +A Z +B Z +B X +B X +B Y +C X +C Y +A Y +C Z +A Y +C Z +A X +B X +B X +C X +B X +B X +A Y +B Y +C Y +A Z +C Y +B Y +B X +B X +B Z +B X +B Z +A Z +B Y +C Z +B Z +B Z +B Y +A Y +C Z +A Z +C Y +C Z +B Z +C Z +C Z +B Y +A Z +C Z +C Z +A Z +A Z +B X +C Y +A Y +C Z +B Y +C Z +A Y +C X +C X +B Y +C Z +C X +C Z +B Y +A Y +B Z +C Z +B Y +C Y +C Z +C Z +B Z +C Z +A Z +A Y +C Z +C Z +B Y +A Z +C Z +C Z +C Y +B Y +C Z +C Z +C Z +C Z +A X +B Y +C Z +B Y +C Z +B Y +C X +C Y +A X +C Z +B X +B X +A Z +A Z +A Z +B Y +C Z +B Z +A Z +B Y +C Y +C Z +C Z +C Z +C Y +C Z +B Y +C Z +C Z +B Z +A Y +B Z +C Z +C Y +A Z +C X +B Z +C Y +B Y +C Z +C Z +A Z +C Y +C Y +C Y +B Y +C Z +C X +B Y +C Z +C Y +B Z +A Y +C Z +A Y +B Z +A Y +A Y +B Z +A Z +C Z +C Z +B X +C Z +C Z +B X +B Y +C Z +C X +A X +C Z +C Z +C Z +B X +B X +A Z +C Z +C X +A Z +C Z +C Z +A Z +B Z +C Z +B Y +C Z +A Y +B Z +C Z +C Z +C Z +C X +A X +A Y +B Y +C Z +B Y +C X +A Y +C Z +C Z +B Y +B Z +C Z +B Y +B Y +B Y +A Y +C Z +B Z +A X +B Y +C Z +C Z +C X +A Y +C Z +A X +B Y +A X +A Z +B X +B X +C Z +C Z +A X +C Z +A Y +B Y +B Z +C X +C Y +B X +C Z +C Y +B Y +C Z +C X +B Z +C Z +C Z +C X +C Y +C Z +A Y +C Z +C Z +C Z +C Z +C Z +C Y +B Y +C Z +A X +A Z +C Y +B Z +B X +A Z +C Z +C Y +C Z +C X +A Y +C Z +A Z +B Y +B Z +C Z +B Z +A Y +C Z +B Y +C Z +C Y +C Z +C X +A Y +A Y +C Y +C Z +C Z +B Y +A Z +C Z +C Y +A Y +A Z +A Z +C X +C Z +B X +C Y +C Z +C Z +B Y +C Z +B X +C Z +B Z +B Y +C X +C X +A X +B Y +A Z +C X +B X +A Z +C Z +C Z +A X +A Y +B X +C Z +A X +C Z +B Y +C Z +A Y +B Y +C Z +B Z +B Y +A Z +C Z +A X +B Z +C Y +B Z +B Y +A Z +A Y +A Z +A X +C X +A X +C Y +C Z +A Y +C Y +B X +A X +A Y +C Y +B Y +C Z +C Z +B Z +C Z +C Z +C Z +C Z +C Z +C Z +C Z +B Y +C Z +A Y +B Y +C Y +C X +C Z +B Z +B Y +C Y +C Z +A Z +C Y +B Z +C Z +A Z +C X +B Y +B Y +B Y +C Z +B Y +A Y +C Z +C Z +A Z +A Z +C Z +B Z +B Y +C Z +B Y +B Z +C Z +A X +A X +C X +C Y +A Y +C Z +A Y +A Z +C Z +C Z +C Z +B Y +A Z +B Z +C X +B X +C X +B Y +C Z +A Z +C Z +A X +B Z +B Z +B Y +A Y +C Z +B X +C Z +B Z +C X +A X +C Z +C Z +B Z +B Y +C Z +C Z +A Z +C Y +C Z +B Y +A Y +B Y +A Y +C Z +C Y +B Z +A Y +C Z +B X +B X +B X +C Y +C Z +A Y +C Z +C Z +C Z +A Y +C Z +B X +A Z +C Z +C Z +A Y +C Z +C Z +B X +C Z +B Y +A Z +C X +C Y +C Y +C Z +C Y +A Y +B Z +C Z +C Z +C Z +B Y +C Z +C Z +A Y +A X +A Y +C Y +C Z +C Z +A X +B Z +C Z +C Z +B Z +B Y +C Z +A X +C X +A Z +B Z +C Z +A X +C X +C Z +B Y +A X +A X +C Z +C Z +B X +C Z +B Z +B Y +A X +C Y +C Z +C X +A Y +B Y +C Z +C Z +C Z +C Z +B Z +A Y +C Z +C Z +B Z +C Y +B Z +B X +B Y +A Z +C Z +A Z +B Y +C Y +C Z +C Z +C Z +B Z +C Z +C X +C Z +B X +C Y +B Y +C Z +C Z +C Z +C Z +B Y +B Y +C Z +B Y +C X +B Z +A X +C X +C Z +B X +C Z +C X +C Z +A X +A Z +B X +C Z +C Z +B Y +C Z +A Y +C Z +C Z +C Y +C Z +A Z +A X +C X +B Y +A Y +B Y +A X +C Z +B Y +B Y +C Z +C Z +B Y +B X +A Y +C Z +B Y +C Y +C Z +C Z +C X +B Y +A Z +C Z +A Z +A X +C X +A Z +C Z +C Z +A X +B Z +C Z +B Y +A Z +A Y +A X +A Y +A X +C Z +A X +B Y +A Y +B Z +C Y +C Z +B Z +C X +A Y +A Y +C Z +C Y +C Z +B Y +B Y +B Y +B X +C Z +C X +B Y +C Z +C Z +B Y +C Z +C Z +B Y +C Z +C Y +C Z +C Y +C Z +C Y +A Y +A Y +C Y +C Y +C Y +C Y +C Z +C X +B Z +B Z +C X +C Z +B Y +B Y +A Z +C Y +C Z +C Z +C X +C Z +C Z +A Z +B Y +C Z +A Y +C Z +C Z +C Z +A Z +C X +C Y +B Y +A Z +B Z +C Z +B Y +C Z +B Z +C X +A X +C Y +A Y +B Z +B Y +A X +C Z +B Z +C Z +C Z +C X +B Z +C X +A Z +B Z +C Z +C Z +C Z +B Y +A X +C Z +C Y +C Y +C Z +A Z +C Z +C Z +A X +C Y +B Y +A Y +A Z +A Z +B Z +C Z +A Z +B Y +B Y +A Y +A Z +A Z +C Z +C Z +C Z +A X +C Z +B Z +B X +C Y +A Z +B Y +C Z +B Y +A X +C Z +A Z +C Z +B Z +C Y +C Z +B Y +A Z +B Z +A Y +B X +C Z +B Y +C Z +C Z +C X +C Y +C Z +B X +C X +A Y +A Y +C Z +C Y +B Y +C Y +C Y +C Z +A Y +A Z +B Y +C Z +C Z +A X +C Z +C Y +C Z +B X +C Y +A Z +A Y +A Z +C X +C Z +C Z +C Z +B Z +C Y +B Z +C Z +B Y +C Z +B Y +A Y +B X +C Z +A Y +C Z +A Y +A Z +A Z +B Z +A Y +C Z +A X +B Y +C Z +B Z +C Z +A Y +A Y +B Z +B X +B X +C Y +C Z +C Z +C Y +A X +B Z +C X +B Y +C X +B X +C X +C X +C Z +A Y +C Y +C Z +B Z +A Z +A Z +C Z +A Z +C Z +A Z +A X +B Y +A X +A Y +C X +B Y +C Z +A X +B X +C Z +C Z +C X +B X +A Z +B X +C Z +B Y +C Z +C X +C Z +C X +C Z +B Z +B Y +C Z +B X +C X +C Z +C Y +A Z +B Z +A X +B X +B X +C Z +B Z +C X +A Y +C Z +C Z +B Y +C X +C Z +A X +B Y +C Z +C Z +C Z +C Z +C Z +A X +A Z +C X +A Z +C Z +A Z +C Z +B Y +B Z +A X +C X +C Z +B Z +A Z +C Z +C Y +C Z +C Z +C X +A Y +B Y +C Z +A Y +C Z +B Z +C X +B Z +B Z +B X +B Z +C Y +C Z +C Y +B Y +C Y +C Z +C X +C X +A Z +B Y +C Z +A Y +B X +C Y +A Y +A Z +B Y +B Y +A Y +B Y +B Z +A X +C Z +B Y +A X +C Z +C Z +C X +B Y +A Z +A X +B Y +A Z +C Z +B Z +B Z +B Y +B Y +A Z +A Z +A Y +C Z +C Z +A Z +C Z +C Z +C Z +A X +C Z +A Y +C Y +A Z +C Z +B Y +C X +B Y +C Z +C Z +C Z +A Z +B Z +B X +C Z +C Z +A Y +B Z +B X +C Z +C Y +A Y +C Y +C Y +C Z +C Y +C X +C Y +B Z +B Y +C Z +A Z +A Y +C Z +C Z +B Y +B Y +A Z +A Z +A X +C Z +C Z +A Y +B Y +C X +C Z +C Z +A Z +C Z +B X +B Y +A Y +C Z +A X +A Y +C Z +B X +C X +B Z +C Y +C X +B Y +B Y +C Z +C Z +C X +C Z +A Y +A Z +C Y +C Z +A Z +C Z +C Y +A X +C X +C Z +B X +C Z +B X +C Z +C Z +C Z +B X +B Y +B Y +B Y +C X +B Y +C Z +C Y +C Z +C Z +B X +C Y +B Z +C Z +C Y +C X +C Z +A X +A Z +C Z +C Y +C X +C Z +B Y +C X +C Y +C Z +C X +A Z +B Y +B X +C X +C Y +B Z +C Z +C Y +B Z +C X +A Z +A Y +C Z +C Z +C X +B Y +C Y +C Z +A Z +B Z +B Y +B Y +B Z +C Z +A X +B Y +A Z +A Y +C Z +C Z +B Y +C Y +C Z +B Z +A Z +B Z +C Z +C Z +B Y +B X +C Z +C Y +C Z +A Y +C Z +A X +C X +B Y +B X +C X +C Z +C X +B Z +C Z +A Z +B Z +C Z +A X +C Z +C Z +A Y +B Y +B Z +B X +B Z +C X +B Y +C Z +C Z +C Z +A Z +C Z +C X +C X +B Y +C X +C X +C Z +C Z +A Z +C Y +C Z +C Z +B Z +C Z +A Y +B Y +C Z +C Z +B Y +B Y +C X +C Z +B X +A Y +B Z +A Y +A Y +A Y +C Y +C Y +C Z +B X +B Z +C Z +C X +C X +B Z +A Z +A X +B Y +C Z +B Z +A Z +B X +C Z +A Y +C Z +A Z +A Z +C Z +C X +C Z +C Y +A X +B Y +C Z +C Z +C Z +C Z +C Z +A Y +C X +C Z +A Y +B X +C Z +A Y +C Z +C Z +C Y +B Z +B X +C Z +A X +B Y +C Z +C Z +A X +A Y +C Z +C Y +B Y +C Z +C Z +A Y +A Y +A Y +A Y +C Z +A X +A Z +B Y +B Z +A Z +C Y +C Z +C Z +C Z +A Z +C Z +A Z +C Z +C Z +A Z +C Z +C Z +A Z +B X +C Z +A Y +B Y +C Z +A X +C Z +A Y +C Z +C Z +C Y +C Z +A X +B Y +C Z +A Z +C Z +A Z +A Z +B Y +C X +B Y +C X +C X +C Z +A Y +B Z +A Y +C Z +C Z +B Z +A Y +C Z +B Y +C Z +A X +C Z +C Z +C Z +B Z +A X +B Y +C Z +A X +C Z +C X +B Y +C Z +A Y +C Y +B Y +A Y +C Z +A X +B Y +A Y +A Z +C Z +C Z +C X +A Z +C Z +C Z +B Y +B X +A Z +C Z +B X +C Z +C Y +C Z +C Z +C Z +C Y +A Y +C Z +C Y +C Z +C Z +B Y +B Y +B X +C Y +B Z +C Z +B Y +C Z +C Z +C Z +A Z +A Y +C Y +C Z +C Z +A Z +C Z +C Z +C Z +B Y +B X +B Y +A Y +C Z +B Z +C Z +B Y +B Z +A Y +C Z +C Z +C Y +A Y +C Z +C Z +B Y +A Z +A Y +C Z +C Z +B Y +C Z +B Y +B Z +C X +C Y +C Z +A Y +C Z +A Z +A X +B X +C Z +C Y +C Z +C X +B X +B Y +B Y +C Z +C Z +C Z +A X +B Z +C Z +A Z +A Z +C Z +B Y +B X +B Y +C Z +B Z +C Z +B X +B Z +C Z +B X +A X +C Z +C X +B Z +C Y +C X +C Z +C X +A X +A X +C Z +C Z +C Z +B X +B X +C Z +C Z +C X +C X +C Z +A Y +B Y +B Y +B Y +C Z +C Y +C Z +C Z +C Z +B Y +C Y +C Z +B X +C Z +A X +C Y +A Y +C X +A Y +A Z +C Z +B Y +B Y +A Z +C Y +B Z +B Z +A X +B Y +C Z +B X +A Z +A Z +C Z +B Z +A Z +C X +B Z +C Z +C Z +C Z +C Z +B X +B Y +C Z +C Z +C X +C Y +A Z +B X +B Y +B Z +C Z +B Z +C Z +C Z +C Z +C Z +A Y +C X +C Z +A Y +C Z +C Z +B Z +C Z +A Z +C Z +A Y +C X +C Z +A X +C X +C Z +C Z +B Y +C Z +A Z +C X +C Z +B Y +A Y +B Y +C Z +B X +A X +C Z +B Y +C Z +B Y +A Z +A Z +C Z +A Z +B Y +C Z +C Y +B X +C Z +A Z +B Z +C Z +C Y +C Z +B Z +A X +A X +A Z +C Z +C Z +C Y +C X +C X +A X +C X +B X +C X +A Y +C Y +C Z +C Z +C Z +C Z +C X +A Y +C Y +A Y +B X +C Y +C Z +A X +A Z +C Z +C Z +B Y +C Z +B Z +C Z +C Z +A Y +A Y +C Z +C Z +A Z +C Z +C Z +B X +C Y +C Z +C Z +C Z +C Z +A X +B Y +B X +B Z +C Z +A Z +A Z +B Z +A Z +B X +C Z +B Z +C Z +A Z +C Z +C Z +A Y +B Y +C Y +B X +A Z +C X +C Z +C X +B Y +B Z +C Z +C Z +C Z +C Y +C Z +A X +A X +A Y +C X +C X +A Y +B Y +C X +C Z +C Z +B X +B Z +B X +C X +B X +A Y +C Z +A Z +C Z +C Z +C Z +C Z +C X +A Z +B Y +C Z +C X +A Y +A Y +C Z +C Z +B Z +B X +C Z +A Z +B Y +C Z +C Z +B Y +A Y +C Z +B Z +B Z +A Z +C X +C Z +B Z +C Z +C Z +B Y +C X +B Y +A Z +C Z +A X +C Z +B Y +C Z +A Z +B Z +C Z +A Z +A Y +C Y +B X +C Z +A Y +C Y +A X +A Z +A Y +C X +C Z +C Z +B Z +A Z +C Z +C Z +C Y +C X +C Y +B Y +C Z +B Y +C Y +C Y +C Y +A X +C Z +C Z +B X +B Y +C Z +A Y +C Z +A Y +B Z +C Z +C Z +C Z +A Y +A X +B Z +B Y +A Y +A Y +B Y +B Z +C X +A Y +B Y +C X +C Z +C Z +B Y +C Z +C X +C Z +C X +C Z +A Y +A Y +B Y +C Z +A Z +C Y +C Z +A X +C Y +C Y +C Y +A Z +C X +C Z +C Z +A Z +C Z +B Y +C Y +C Z +C Z +C Z +B Z +C X +C Z +C Z +C X +C Z +C Z +C X +C Z +C X +B Z +B X +A X +C Z +A Y +C Z +B X +C Y +A X +C X +B Z +C Z +A Y +A X +C X +B Z +B Z +C X +A Y +C Y +A Y +C Z +C Y +A X +C Z +A Y +A Z +C Z +B Y +C X +A Y +A Y +C Y +B Y +A Z +B Y +C X +A Y +B Z +B Z +C Z +C Y +C Z +B Y +C X +C Z +C Z +A Y +C Z +C X +A Y +C Z +C Z +B X +C Z +A X +C Z +A Y +C Y +A Y +B X +C Y +C Y +A Y +C Z +A Z +C Z +C Y +C Z +A Z +A Z +C Z +C Z +C Z +C Z +C Z +A Y +A Z +B Y +C Z +A Y +C Y +C Z +A Y +C X +C Z +A Z +C Z +C Y +C X +C Z +C Y +A X +B Y +C Z +A Y +A Z +C X +C X +C Z +A Z +C Z +C Z +C Z +C Z +A X +C Z +C Z +C X +C Z +A Y +C Z +C Z +B X +B Y +C Y +B Z +C Y +C Z +B Y +A Y +A Y +B Y +A Z +B Z +B Y +A X +C Z +B X +A Y +C X +C Z +C X +C Z +C Z +C X +A Z +B Y +A X +C Z +C Z +B Z +C X +C X +B Z +A Y +A Y +A Y +A Z +C Y +C Z +A X +B Y +C Z +B Y +B Y +C Y +C Z +C Y +B Y +C Z +B Z +C X +C X +A X +C Z +C Z +B Z +A Y +A Z +B X +B Z +B Y +C Z +A Z +C X +A Z +B Y +C Z +B Y +A Y +C Z +A Y +B Z +C Z +A Z +B Z +B Y +B Y +A X +B Y +B Y +C Z +B Y +C Z +B Z +A Z +A Y +C Z +B Y +C Z +C Z +C X +C X +C Y +B Y +C Y +A Z +C Z +A Z +C Z +B Z +C Y +C Z +A X +B X +A Z +A Y +A Y +C Z +C Z +C Z +C Y +C Z +C Z +A Z +A X +B X +A Z +C Y +C Z +B Y +A Y +A Y +B X +B X +C Z +C Z +C Z +C X +C Z +C Y +C Z +A Y +C Z +C Z +C Y +A Z +B Y +A Y +B Y +B Y +A Y +A Y +B Z +C Z +C X +B Y +C Z +C Z +C X +A Z +B Y +A Z +C Z +C Z +B Y +C X +C Z +C Y +A Y +C Z +A Y +B Y +A Y +C X +C Y +C Y +B Y +B Z +A Z +C Z +C Y +B Z +B Y +A Y +A Z +A Y +A Y +B X +C Z +A X +B Y +B Y +C Z +B Y +B Y +B Z +C Z +A Y +C X +A X +A Y +C X +A Y +A Z +C Z +B Y +B Y +B Y +C Y +A Y +B Z +C Z +C Z +B Z +C Z +B X +C Y +B Y +A Z +C X +A Z +C Z +B X +C Z +C Z +B Z +C Z +A Z +A Z +B Y +C Z +A Z +C Y +B Y +B Z +C Z +C X +C Z +A Z +C Z +C Y +C X +A Y +B Y +B X +C X +C Z +A Z +C X +B Z +C Z +A Y +C Y +C Z +A Z +C Z +A Z +C Y +C X +C Y +B Z +B Y +A Z +A Y +B X +A Z +C X +C Y +C X +C Z +C X +A X +C Z +B Y +C Z +A Y +B Z +C X +B Y +C Z +A Z +C Z +C Z +C Y +A Y +A Z +A Y +C X +B Z +A Z +C Z +C Z +C Z +A X +C Z +A Z +A Y +C X +B X +C Z +C Z +A X +A Y +C Z +C X +C Z +A Z +C Y +C Z +B Z +C Y +C X +A Y +A X +A Z +C Z +C Z +C Z +C Z +A Y +C Z +A Z +A Y +C Z +B Z +B Y +C X +C Z +C X +C Z +B X +A Y +C Z +B Z +A Z +A Z +B Z +B Z +C Z +C Z +B Y +C Z +A Y +C X +A X +A X +C X +C X +B Y +B X +A Y +C Z +B X +B Y +A Z +B Z +A Z +A Z +C X +C Z +A X +A Y +C X +C Y +C Y +C X +A Z +C Z +C X +C X +A Y +A X +C Z +C Z +B Y +B Z +C X +C X +C Z +B Z +B Z +B Z +B Z +B Y +B X +C Z +C Z +C Z +C X +C Z +C Z +B Y +C Z +C X +B Y +C Z +C Y +B Z +C Y +C Z +C Z +C Z +C Z +C Z +C Z +C Z +A X +A Y +C Y +C Z +A Y +B X +C Z +B Y +C Y +C Z +C Z +C Z +C Y +C Z +A Z +B Y +A Z +C Z +B Z +C X +C X +A Z +C Z +C X +C Z +B Z +C Z +C Y +B X +C Z +A Z +C X +B Y +B Y +C Z +C Z +C Z +B Y +C Z +B Y +A Y +B Z +B Z +B Y +C Z +B Z +A X +C Z +C Z +C Z +B Y +B Y +C Z +C Y +C Z +B Y +C Z +B X +B Z +C X +B Y +C Y +B Y +C Z +A Y +B Z +C X +B Y +A Z +C Z +C X +A Z +B Z +A Y +C Z +C X +B Y +C Z +C Z +B Y +B Z +C X +C X +C Z +C Z +C X +B Z +A Y +C Z +C X +A Z +C Z +C Z +C Z +C Y +B Z +A X +B Z +B Z +C Z +C Z +B Z +C Z +B Z +A X +B Z +B Y +B Z +B Z +B Y +C X +A Y +B Y +B X +B X +A X +C Z +C Y +C Y +C Y +C Y +B Y +A X +C Y +A X +C Z +B Z +C Z +C Y +B Y +A Z +C Y +A Z +B Y +B X +C Z +A X +A Z +C Z +C Z +A X +C Z +C X +A Z +C Y +B Z +C Y +B Z +A Y +A Z +C Z +A Y +C Z +C Z +A X +C Z +C Z +C Z +B Y +C X +C Y +C Z +B X +A Z +C Z +C X +B Y +A Y +B Y +C Z +C Z +C Z +A Y +A X +C Z +C Z +C Z +C Z +B Y +A Z +C Z +A X +A Y +B Z diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..95eeaf2 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,6 @@ +[flake8] +# Use black line length: +max-line-length = 88 +extend-ignore = + # See https://github.com/PyCQA/pycodestyle/issues/373 + E203, E231