From 477c54e1a8aa3e79cc4d186125c204eff27a7026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B8ren=20Rasmussen?= Date: Fri, 2 Dec 2022 09:40:51 +0100 Subject: [PATCH] Add 2022 day 2 --- 2022/day_2/data.txt | 2500 +++++++++++++++++++++++++++++++++++++++++++ 2022/day_2/demo.txt | 3 + 2022/day_2/part1.py | 33 + 2022/day_2/part2.py | 38 + 4 files changed, 2574 insertions(+) create mode 100644 2022/day_2/data.txt create mode 100644 2022/day_2/demo.txt create mode 100644 2022/day_2/part1.py create mode 100644 2022/day_2/part2.py diff --git a/2022/day_2/data.txt b/2022/day_2/data.txt new file mode 100644 index 0000000..787ae71 --- /dev/null +++ b/2022/day_2/data.txt @@ -0,0 +1,2500 @@ +B Y +A Z +A Z +C Z +B Y +B Y +B X +B Z +C Z +B X +B Y +A Z +B Y +B Z +B Y +C Z +B Z +B Y +B Z +C Y +B Y +A Z +B Y +B Y +B Y +C Y +A Z +B Y +B X +A Z +B X +A Z +A Z +B Y +B Y +B X +A Z +B Y +B Z +C X +C X +B Y +B Y +B X +B X +C X +B X +A Z +B Y +B Y +C X +A Z +B Y +B Z +B X +B X +A Z +A X +B Y +B Y +B Z +C Z +B Z +B Z +B Z +A Z +A Z +B X +B X +B Y +B X +B X +C Z +C Z +A Z +A Y +A Z +B Z +A Z +B Y +C X +B X +C X +B Z +B Z +C Z +B Z +B X +C X +A Z +C X +B Z +A Y +C Z +B Y +C Y +B X +A X +B Y +B X +B X +B Z +B Y +A Z +B Z +B Y +B Y +A X +A Z +B X +B X +B X +B X +B Z +B Z +B Y +C X +A Z +A Z +B Y +B Z +B Y +A Z +B Z +A Z +A Z +C X +B Z +A Z +A Z +B Y +B Z +A Z +B Y +B Y +A Z +B Y +C X +B Z +B Y +B X +C X +B X +B X +B X +A Z +A Z +C Y +A Z +B Y +A Z +C X +B Z +B Z +C X +B Y +C X +B X +B X +C X +A Z +B Y +C X +B X +B Y +A Z +B Y +B Y +C X +B Y +C X +A Z +A Z +A Z +B Y +B Y +A X +A Z +A Z +B Y +C X +C Y +B Y +C X +A Z +B X +A Z +A Z +C X +B Y +A Z +B Y +C X +A Z +B X +B Y +A Z +B Y +B X +B X +C X +B Y +C Y +A Z +B Y +B Y +C Y +B Y +C Y +C X +A Y +A Y +B Z +B Y +A Z +B Z +B X +B X +B Y +A Z +B Y +B X +B Y +B Y +C Z +B Y +B Y +A Z +A Z +B Z +A Y +C X +B Y +B Y +B Z +B Z +B Y +C X +B Y +B X +B Z +B Y +B X +B Y +C Z +B Y +B X +A Z +B Z +B Z +A Z +C X +B Y +C Z +A Z +B Y +C Z +B Y +B X +B Y +B X +C Z +B Z +A Z +A Z +A Z +A X +B Z +B Y +B X +B Y +A Z +B Z +C Z +B X +B Z +B Z +A Z +B Y +B X +A Z +A Z +B Y +B X +A Z +A Z +C Z +A Z +C Z +B Y +B Y +B Z +C X +A Z +B X +B Y +B X +B Y +B Y +B X +B Z +B X +C Z +C X +C X +A Z +A Z +B X +B X +A Y +C X +B Y +A Y +B Z +B X +A Z +B X +B Y +B Y +B Y +B Y +A Z +A Z +B Y +B X +C Z +B Z +C X +B Z +B Y +C X +A Z +B Y +A Z +A Z +B Z +B Y +B X +A Z +B X +B Y +A Z +B Z +B X +B X +A Z +C Y +B X +A Z +B X +B Y +C X +B Y +C Z +C X +B Y +B Y +B Y +B X +B Y +B X +A Y +A Z +B Z +B Y +B X +B Z +B Y +C Z +B Y +A Z +B X +A Z +C X +A X +B Z +B Z +C X +A Z +B X +A Z +A Z +B Z +A Z +B Y +B Z +C Z +A Y +A Z +A Z +A Z +C X +B Z +B Z +B Y +B X +B Y +B Y +B Y +B Z +B Y +B Y +A Z +B Z +A Z +C X +B Y +B X +B Y +B X +B Y +B Y +C X +B Y +B Y +B Z +B Y +C X +B Y +B X +B Y +C X +A X +A Z +C Z +B Y +C Z +B X +C Z +C X +C Z +B Y +B Y +C X +C X +B Y +C X +A Y +B Y +B X +B X +B Z +B Y +C Y +C X +B X +B Y +B Z +B X +B Z +B Z +C X +B X +B Y +B Z +B X +C Z +A Y +B Y +B Y +B Y +A Y +C Y +B Y +B Z +B Z +B Y +B Y +B Z +B X +B X +B Y +A Z +C Y +C Z +B Y +B X +B Y +B Y +C X +B Y +C X +A Z +B X +C X +C Z +A Z +A Z +B Y +C X +A Z +A Z +B Y +A Y +B Y +A Z +A Z +B X +C X +A Z +B X +B Z +A Z +A Z +B X +B Y +B X +B Z +B Y +B Y +B Z +C X +C X +B Y +A Z +B X +B X +B Y +B Z +B Y +B X +B Z +B X +B Y +C X +B Y +B Y +C Y +A Z +B Y +B X +B Y +A Z +C X +A Z +A X +B Z +B X +A Z +B Y +B X +B X +A Z +B Y +A Z +B Z +B Y +A Z +B Y +B Y +A Z +B Z +C Z +B Y +B Y +C Y +A Z +B Y +B Y +B Y +B Y +B Z +B Y +B Y +B Y +C X +B Z +B X +A Z +B Z +C X +B Y +B Y +A Z +B Y +B X +A Z +A Z +C Z +B X +B X +B Y +B Z +B Z +B Z +B Y +B Y +B Y +B Y +B Z +B Y +A Z +A Y +A Z +B Y +B Y +A Z +B X +B Y +A Z +C Z +B Z +B Z +B Y +A Z +A Z +B Y +B X +B Z +B X +B Y +B Y +B X +C X +B Z +B X +A Z +B Y +C Z +B X +A Z +C Z +C Z +A Z +B Y +B Y +A Y +B Y +C Z +B X +C X +B Y +B X +B Z +B Y +B Z +B Y +B Y +A Z +B X +B X +A Y +B Z +B X +B Z +A Y +B Z +C X +B X +B X +B Z +B X +C Y +B Y +C X +C X +B Z +B X +C Z +B Z +A Z +C Y +B Y +B Y +B X +B Z +B Y +B Y +B X +C X +B Y +B Y +C Y +B Z +C X +A Z +B X +B X +B Z +B X +B Y +A Z +B Z +B X +A Z +B Y +C X +A Y +A Z +C X +B X +B Z +B X +C X +A Z +B X +B Y +B Y +A Z +B Z +C X +A Z +B Z +C X +B X +A Z +C X +C Z +B Y +B Z +B Y +B X +C Z +B Z +B Z +B Y +A Z +C Z +A Y +B Y +C X +B Y +B Z +A Z +B Z +A Z +B X +C X +B Y +A Z +B Y +B X +C Z +B Z +C X +B Y +B X +C Y +B Y +C X +B Y +B Y +B Y +B Z +B Y +B X +B Y +B Y +A Z +A Z +C X +B Z +B Y +A Z +B X +C X +B Y +B X +A Z +C Z +A Z +B Z +B Y +B X +B Z +B Y +A Z +C X +C Z +A Y +A Z +C X +C Y +C Z +B Y +B X +B Z +B Y +B X +B Y +A Z +B Y +C X +B X +B Y +C Z +B Y +B Y +B Y +B X +B Y +C Z +B X +B Y +B Y +B Z +B X +B X +B Z +B Z +A Z +A Z +C X +B Y +B Y +C X +B Y +B X +A Y +C Z +B Y +B Z +B Y +B Y +A Z +B Y +B Z +B Y +B Z +B X +B Z +B Y +A Z +B X +B Z +B Y +B Y +B Z +B Y +A Z +B X +B Y +B Z +B X +B Y +B X +B X +B Y +B X +C Y +B Z +B Y +B Z +C Y +A Z +B Y +A Z +B X +A Z +A Z +C Z +B X +C Y +A Z +B Z +B Z +B X +B Z +B Y +A Z +B Z +C Z +A Z +C Y +A Z +B Y +A Z +B Y +A Z +B X +A Z +B Z +C X +B Y +B Y +B Y +C X +B Z +C X +A Z +A Z +C X +B Y +B Z +B X +B Y +B X +A Z +B Y +B Y +A Z +B Y +B Z +B Z +B X +B Z +B Y +B X +B Y +B Y +C X +C Z +B Y +B Y +B Y +B Z +B Y +B Y +B Y +A Z +B Y +B X +B Y +B X +B Z +B Y +B X +B X +A Y +B Y +B X +B Y +B Y +B Y +B Z +B X +A Z +B Y +B Y +B Y +A Z +B X +B X +C Z +B Y +B Y +A Z +B Y +B Z +B X +C X +B Y +B Y +C X +C Z +B X +A Z +B Y +B Y +B X +B X +B X +B Y +B Y +A Z +A Z +B Y +B Y +A Z +B Z +A Z +C X +C X +B Y +B Y +A Z +A Z +C Z +B Z +B X +A Z +B X +B Y +B Y +B X +B Y +B Y +C Z +B Y +B X +C Z +C Z +B X +B Y +B Y +B Z +A Z +B Y +B Y +B Y +B X +B X +A Z +A Z +B X +B Y +B Z +B Y +B Z +B Y +B Z +C X +B Y +C X +B Y +B Y +C Y +A Z +B X +C Z +B Y +B Z +B Y +B Y +B Y +C X +B X +B Y +A Z +C Y +B Y +A Z +B Y +B Z +B Z +B Y +B Y +B Y +C X +B Y +A Y +C Y +B X +B X +B X +B X +B Z +B X +B Z +B Y +B Y +A Z +B X +B X +A Z +A Y +B Y +B Z +B Y +C X +B Y +B X +B Z +C X +B Z +B Y +B X +B X +A Z +B Y +B Y +B Y +C X +A X +B X +C X +B X +C X +B X +A X +B Y +B Y +B Y +B Y +B Z +C Y +C X +A Z +B Z +B Z +B Y +B Z +B Y +B Y +B X +B Z +A Z +A Z +B Z +B X +B Z +A Z +B Y +B Y +B Y +B Z +A Y +B X +B Z +B Y +B Y +B Y +B Y +C X +B Z +C X +A Z +A Z +B Z +A Y +C X +B X +B X +C X +A Z +A Z +A Z +B Y +B Z +A X +A X +B Y +C X +A Z +B Z +A Z +B Y +B Y +B X +B X +B Y +C X +B Z +B Y +B X +B X +B Y +B Z +B Y +B Y +B X +B X +B X +B Y +C X +B Y +B Y +B X +B Y +B Y +B X +B X +A Z +C X +B X +A Z +B Y +B Y +B Z +B Y +B X +A Z +C Y +B X +B Z +B Y +C X +A Z +B X +A Z +A Z +B Y +B Z +B Y +A Z +B Y +B Z +A Z +C Z +B Y +B Y +B X +B Z +B Y +B X +B X +B Y +B Z +B X +B Y +C Z +A X +B Y +C X +A X +B X +B X +B Z +A X +B X +B Y +B X +A Z +B Z +C Z +B X +B X +A Z +B X +B X +B Z +B Y +B Y +A Z +B Y +B Y +B X +B X +B X +B Y +A Y +C X +B X +A Z +B X +B Y +C Z +B Y +B Y +A Z +B Y +A Z +B Y +A Z +B Y +B Y +A Z +B X +B X +B Y +B Y +B Y +A Z +B Y +B Y +A Z +B X +A X +A Z +B Y +B X +B Z +B Z +B Y +B Y +C Y +B Y +B Y +B X +B Y +A Z +C X +B Z +B X +B Z +A Z +B Y +B Z +B X +A Z +A Z +C X +B X +A Y +C X +B Z +B Z +C Z +B Z +B Z +C Y +A Z +C Z +A Z +C Z +B Z +B Y +C X +B Y +B X +A Z +C Y +B X +B Y +B Y +B X +B Y +A Z +A Z +B Y +B Z +B Y +C X +B X +B Y +B X +A Z +C X +B Y +B Y +B Y +B Y +C Z +B Y +C Z +A X +C Z +B X +B Y +B Y +B X +B Y +C X +C X +A Z +B Y +B Y +C X +B Z +C Y +B Z +B Z +B Z +B X +B X +B X +B Z +B X +C X +B Y +C X +B X +C Z +B Y +B X +B Z +B Y +B Y +B Y +B Y +B Y +B X +B X +A Z +B Y +B X +B Y +B Y +A Y +B Y +B Y +A Z +A Z +C Z +B X +B Y +B Y +B Z +C Z +C X +A Z +C X +A X +B X +B Z +B Y +A Z +C Z +B Y +C Z +B X +A Z +B X +A Z +B Y +A Y +B Y +B Y +A Z +C X +B X +B Y +A Z +B Z +B Y +B X +B X +C Y +B X +A Z +B Z +A Z +C X +C Y +B Z +B Z +A Z +B X +B Y +B X +C X +B Y +B Y +B X +C X +B X +B Y +B X +B Y +B Z +B Y +B X +B X +A Z +B Y +B Y +C X +C Y +C X +A Z +A Z +B X +B X +B Z +A Z +A Z +C Z +B Z +A X +B X +B Y +B Y +A Z +B Y +B X +B X +B X +B Y +B X +B Y +B Y +B Y +B Y +B Y +B Y +B Z +A Z +B Y +B X +C X +A Y +B Y +B Y +B Z +C Z +B X +C X +B Z +B Y +B Y +B X +B X +B X +A Z +B X +A Y +B Y +B Y +C X +A Z +B Y +C X +B Y +B X +B X +B X +C Z +B X +A Z +B Y +B Y +B Y +A Z +A Z +B X +A Y +B Y +B Y +B Y +B X +B X +B Z +B X +B Z +B X +B Y +A Y +A Z +C Y +B Z +C X +B Z +B Y +B X +A Y +B Y +B X +B Y +B X +C Z +B X +C Z +B Y +B X +B Z +A Y +A Y +C Z +B X +B X +B Y +A Z +B Y +B Z +A Z +B X +B X +B X +B X +B X +B Z +A Z +A Z +C Y +C X +A Z +A Z +C X +B X +B X +B Z +B X +A Z +B Y +B X +B Y +C X +A Z +B Z +C X +B Y +B Y +A Z +B Y +B Y +B X +B Y +C Y +B X +B Z +B Y +A Z +B Z +A Y +B Y +A Z +B X +B Y +A Z +B Y +C Z +B Z +B Y +C X +C X +B X +B Z +B Y +B Z +B Z +B Z +B Z +A Z +B Y +B X +B Z +B Y +B X +A Z +A Z +A Z +B Y +C Y +C Z +B Z +B X +B Y +B Z +B Y +A Z +A Z +C Z +B X +B Y +B Z +B X +A Y +A Y +B Y +A Y +B Z +B Y +A Z +B Y +B Y +B Y +C Z +B X +B Z +B X +B Y +B Y +B Y +C X +B X +B Y +B Z +B X +B Y +B Y +B Y +B X +B X +B X +A Z +B Y +B Y +C X +C X +C X +C X +B Z +A Z +A Z +B Z +B Y +B X +A Z +C Z +B Y +B X +C Z +C X +B X +B Y +B Y +B X +B X +B Y +A Z +B X +B X +B X +B Y +A Y +B X +A Z +B Y +B Y +B Y +C Y +B Z +B X +B Z +C X +B Y +B Z +C X +B X +B X +B Y +B Y +B Y +A Z +A Z +A Z +B Y +B X +C Z +B Z +B Y +B Y +B Y +B Y +B Z +C X +A Z +C Z +B Z +B X +B X +A Z +B X +B Z +A Z +B Y +B Y +A Z +B Y +B Y +C Y +C Z +B X +A Z +B Z +B Y +C Z +C X +B X +A Z +B Y +B Z +B X +A Z +A Z +A Z +B Y +B X +C X +B Z +B Z +B X +B X +B Y +A Z +B X +B X +B Z +A Z +C X +B X +B Y +B Z +A Z +B Y +B Y +B Y +C X +B Z +A Y +A Z +B Z +C X +A Z +A Z +B Y +C X +B Y +B Z +C X +B Y +B Y +A Z +B Z +A Z +C Z +A Z +B X +B Z +A Z +B X +B Y +C Z +A Y +B Y +B Y +B Y +A Z +B Z +A Y +A Z +B Z +B Y +B Y +A Y +B Y +C X +B Z +B Z +A Z +B X +B X +A Z +B Z +C Y +A Z +A Z +B Y +B Z +B X +C Y +B Y +B Y +B Z +B Y +B Z +B X +B X +B Y +B Y +C X +C X +B X +B X +C X +A Z +B Y +C Z +A Z +B X +B Y +B Z +A Z +C Y +A Z +B Z +A Z +C X +C X +B X +B X +B Y +B Y +B Y +B Y +B Z +B X +B Z +C Y +B Y +A Z +B Y +B X +A Y +B Y +B Z +C X +B X +A Z +A Z +B Y +B Y +A Z +C X +B X +B Y +B Y +B Z +A Z +A Z +C Z +A Z +B Y +B Y +B Y +A Z +B Z +B Y +A Z +A Y +B Y +B Y +B Z +A X +A Z +B Z +B X +A Z +B Z +B Y +B Y +B X +A Y +C Y +B Y +B Y +B X +B Z +A Z +B X +B X +B Y +B Y +A Z +B X +C X +B X +B X +A Z +B Y +C X +A Z +B X +C Z +A Z +B Y +B Y +B X +B X +A Z +C Z +B X +B X +B Y +A Z +B Y +B Y +B X +B Y +B X +A Z +B Y +B Z +B X +A Z +B Y +C Z +C X +A Z +A Y +B X +B Z +B Y +B Y +B Y +B Z +B Z +A Y +C X +B X +C X +B Y +B Y +B Z +B Y +C Y +C X +B Z +C X +B Y +B X +B Y +B Y +A Z +B Y +A Z +A Z +A Z +A Z +B Y +A Z +B X +B X +B X +C Z +B Z +C Y +B Y +A Z +B Z +B Y +B Y +B Y +A Z +B Z +C Y +C X +B Y +B Y +B Y +B X +B Y +B Z +A Z +B Y +B Y +C Y +B Z +B X +B Y +B X +B Z +B Y +C Y +C Y +A Z +B X +B X +A Y +B Z +A Z +B Y +B X +B X +B Z +B X +A Z +B Y +C X +C X +B Z +A Z +B Y +B Y +B Y +B Y +B Y +B X +B Y +B Y +B Z +B Z +A X +A Z +A Z +A Z +A Y +C X +B Y +B Z +B X +A Z +B Y +B Y +B X +B Y +B Y +C Y +C Y +B X +A Z +B Y +C X +B Y +A Y +B X +B X +B Y +C X +A Z +B Y +B X +C X +C Z +B Y +B Y +B Y +A Z +B X +A Z +C Z +B Z +B Y +B Y +B X +B Y +B Y +B X +A Z +C X +C Z +B X +B Y +C Y +B X +A Z +B Y +A Z +B Y +A Y +A Z +A Z +B Y +B Y +B Z +C Z +C X +B Y +B Z +B Y +A Z +B Y +B Z +B Y +B X +B Y +B Z +B Y +B Z +C X +B Y +B Y +C Z +A Z +B Y +C X +B X +A Y +B Y +A Z +B Y +B X +B Y +B Y +B X +B X +B X +B Y +B Y +C Z +B Z +C X +C Z +B Y +C X +B X +A Z +B Y +C Z +A Y +B Y +B Y +B Y +C X +B X +B Y +B Y +B Z +C X +B X +B Z +A Z +B X +B Z +B X +A Z +B Y +B Z +C X +B X +C X +B X +B Y +B Z +B Z +B Z +A Z +B Y +B X +B Y +B Y +B X +B Z +B Y +C X +A Z +B Z +B X +A Z +B Y +B Y +B Y +A Z +A Z +C X +B X +A Y +B Y +B Y +B Y +A Z +A Z +A Z +C Y +B Z +A Y +B Y +B X +B X +B Y +C X +B Y +C Z +B Y +A X +B Y +B X +B Y +B X +C Z +B Y +B Z +B X +B Z +A Z +B Y +B X +B Y +A Z +B X +C Y +B X +B Y +B Y +B Y +C X +B Y +B Y +B Y +A Z +B Z +C X +A Z +B Y +C Y +B X +A Z +C Z +B X +B Y +B X +C Z +B X +B Z +C Y +B X +B Y +B X +B Z +B X +B Z +B Y +B Z +B X +A Z +B X +A X +B X +B Y +B Y +B Y +A Z +B Y +B Y +B Z +C X +B Y +B Y +B Y +B X +B X +B X +C Z +B Z +B X +A Z +B Y +B Z +B Y +B Y +B Y +B Y +C X +A Z +B Z +B Y +B Y +B Z +A Z +B Y +B Z +B Y +B Y +C Y +A Z +B Z +C X +B X +C Z +B X +B X +B Y +B Y +A X +B Y +C Z +A Z +B X +C Z +C Z +B X +A Z +B X +C Z +B Z +B Y +B Y +C X +A Z +B X +B Y +B X +B X +B X +B Y +C X +B Z +B Y +B Y +B Y +B X +A Z +A Z +B Y +B Z +B Y +A Z +B Y +B X +A Z +B Z +B Y +B X +B Y +A Y +B Y +B Y +B Y +B Z +B X +B Y +C Z +C X +B Y +C Y +B Z +A Z +A Z +B Y +B Y +A Z +B Z +B Y +B X +A Z +A Z +C X +A Z +C X +A Z +B Y +C X +B X +B X +B Y +A Y +B Y +B Z +B X +B Y +B Y +A Z +B X +B Y +A Z +A Y +A Z +C X +A Z +C X +A X +B Y +B Y +A Z +B X +B Z +B Y +B Y +B Z +B Y +B Y +B X +B Y +C X +C X +B Y +B Y +B X +C Z +C Z +C Z +C X +B Y +C Z +A Z +C Z +B Y +A Z +B Z +B X +A Y +B Y +B Y +B X +B Y +B Y +C X +B Y +A Z +B Y +A Z +C Z +A Z +B Y +B Z +A Z +B X +B X +B Z +B X +B Y +A Z +B Y +C X +A Z +C Z +B X +A Z +B Y +B Y +C Z +B Z +A Z +B Y +B X +B Y +B Z +C Z +A Y +A Z +B X +B X +A Z +C Y +B Y +A X +A Z +B X +B Y +B X +A Z +C X +B Y +B Y +C X +A X +B Y +A Z +A Z +B Y +B Z +B Y +B Y +B Y +B X +B Y +B X +B X +B X +B Y +A Z +C X +A Z +A Z +A X +A Z +B X +B Z +B Y +A Z diff --git a/2022/day_2/demo.txt b/2022/day_2/demo.txt new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/2022/day_2/demo.txt @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/2022/day_2/part1.py b/2022/day_2/part1.py new file mode 100644 index 0000000..997896c --- /dev/null +++ b/2022/day_2/part1.py @@ -0,0 +1,33 @@ +ahand = ("A", "B", "C") +bhand = ("X", "Y", "Z") +win_tbl = ( + ("A", "Y"), + ("B", "Z"), + ("C", "X"), +) + +def load(filename): + with open(filename) as f: + t = 0 + for l in f: + a, b = l.rstrip().split(" ") + h = bhand.index(b) + 1 + + ai = ahand.index(a) + bi = bhand.index(b) + + if ai == bi: + t += h + 3 + + elif (a, b) in win_tbl: + t += h + 6 + + else: + t += h + + return t + +assert load("demo.txt") == 15 +t = load("data.txt") +print(f"You have {t} points.") + diff --git a/2022/day_2/part2.py b/2022/day_2/part2.py new file mode 100644 index 0000000..c9e8ead --- /dev/null +++ b/2022/day_2/part2.py @@ -0,0 +1,38 @@ +ahand = ("A", "B", "C") +bhand = ("X", "Y", "Z") +win_tbl = { + "A": "B", + "B": "C", + "C": "A", +} + +defeats_tbl = { + "A": "C", + "B": "A", + "C": "B", +} + + +def load(filename): + with open(filename) as f: + t = 0 + for l in f: + a, b = l.rstrip().split(" ") + + if b == "X": + h = ahand.index(defeats_tbl[a]) + 1 + t += h + + elif b == "Y": + h = ahand.index(a) + 1 + t += h + 3 + + elif b == "Z": + h = ahand.index(win_tbl[a]) + 1 + t += h + 6 + + return t + +assert load("demo.txt") == 12 +t = load("data.txt") +print("Total points: ", t)