From 4534eccffd023f0db95d9a17fa3524608ab5d1b0 Mon Sep 17 00:00:00 2001 From: Alfred Melch Date: Fri, 2 Dec 2022 08:48:51 +0100 Subject: [PATCH] Solve 2022/02 --- 2022/day02/README.md | 57 + 2022/day02/input/example0 | 3 + 2022/day02/input/input | 2500 +++++++++++++++++++++++++++++++++++++ 2022/day02/part1.py | 53 + 2022/day02/part2.py | 55 + 5 files changed, 2668 insertions(+) create mode 100644 2022/day02/README.md create mode 100644 2022/day02/input/example0 create mode 100644 2022/day02/input/input create mode 100644 2022/day02/part1.py create mode 100644 2022/day02/part2.py diff --git a/2022/day02/README.md b/2022/day02/README.md new file mode 100644 index 0000000..ff5115b --- /dev/null +++ b/2022/day02/README.md @@ -0,0 +1,57 @@ +https://adventofcode.com/2022/day/2 + +## \--- Day 2: Rock Paper Scissors --- + +The Elves begin to set up camp on the beach. To decide whose tent gets to be +closest to the snack storage, a giant [Rock Paper +Scissors](https://en.wikipedia.org/wiki/Rock_paper_scissors) tournament is +already in progress. + +Rock Paper Scissors is a game between two players. Each game contains many +rounds; in each round, the players each simultaneously choose one of Rock, +Paper, or Scissors using a hand shape. Then, a winner for that round is +selected: Rock defeats Scissors, Scissors defeats Paper, and Paper defeats +Rock. If both players choose the same shape, the round instead ends in a draw. + +Appreciative of your help yesterday, one Elf gives you an _encrypted strategy +guide_ (your puzzle input) that they say will be sure to help you win. "The +first column is what your opponent is going to play: `A` for Rock, `B` for +Paper, and `C` for Scissors. The second column--" Suddenly, the Elf is called +away to help with someone's tent. + +The second column, you reason, must be what you should play in response: `X` +for Rock, `Y` for Paper, and `Z` for Scissors. Winning every time would be +suspicious, so the responses must have been carefully chosen. + +The winner of the whole tournament is the player with the highest score. Your +_total score_ is the sum of your scores for each round. The score for a single +round is the score for the _shape you selected_ (1 for Rock, 2 for Paper, and +3 for Scissors) plus the score for the _outcome of the round_ (0 if you lost, +3 if the round was a draw, and 6 if you won). + +Since you can't be sure if the Elf is trying to help you or trick you, you +should calculate the score you would get if you were to follow the strategy +guide. + +For example, suppose you were given the following strategy guide: + +[code] + + A Y + B X + C Z + +[/code] + +This strategy guide predicts and recommends the following: + + * In the first round, your opponent will choose Rock (`A`), and you should choose Paper (`Y`). This ends in a win for you with a score of _8_ (2 because you chose Paper + 6 because you won). + * In the second round, your opponent will choose Paper (`B`), and you should choose Rock (`X`). This ends in a loss for you with a score of _1_ (1 + 0). + * The third round is a draw with both players choosing Scissors, giving you a score of 3 + 3 = _6_. + +In this example, if you were to follow the strategy guide, you would get a +total score of `_15_` (8 + 1 + 6). + +_What would your total score be if everything goes exactly according to your +strategy guide?_ + diff --git a/2022/day02/input/example0 b/2022/day02/input/example0 new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/2022/day02/input/example0 @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/2022/day02/input/input b/2022/day02/input/input new file mode 100644 index 0000000..6ec569e --- /dev/null +++ b/2022/day02/input/input @@ -0,0 +1,2500 @@ +B Z +A Z +B Z +C Z +C Z +B X +A X +C X +A Z +C Y +C X +C Y +C Y +A X +A Z +A Z +A X +B Z +B X +A Z +A X +C Y +A X +B Z +B Z +A X +C Z +A Z +A X +B Z +A Z +A Y +C Y +A Z +C Z +A Z +C Y +C Z +C Z +A Z +A X +A X +B X +A Z +B Z +A X +A Z +A Z +A X +A X +C Y +A Z +B X +C Y +A X +B Y +A Z +A X +A Z +A X +C Z +A Z +A Y +A X +C Y +A X +B X +A X +A Z +C Y +A Z +A X +C X +C Z +C Z +A Z +A X +A Z +C X +C Z +B Z +A Z +C Y +C Z +B X +A X +A Z +A X +A X +C Y +A Z +C Z +B X +A X +A X +A Z +A Y +A X +C X +A Z +B X +C Y +A X +A X +A X +C X +B Z +B Z +A Z +A X +A Z +C Z +C X +C Y +B X +C Z +A Z +C X +A Z +A X +A X +A X +A X +A Z +B X +A X +B X +C Z +A Z +A Z +A X +A X +A X +B X +A Z +A X +A Z +A X +B Z +A Z +A X +B Z +A Z +A Z +C Y +B Z +A Z +B Z +A Z +A X +C X +A X +C Y +C X +A X +A X +C Y +A Z +A X +B Z +A Z +A Z +B X +B Z +A X +A Z +A X +A X +A Z +A X +A Z +A Z +C X +A Z +A X +C Y +A Z +A Z +A X +A X +A X +A X +B Z +B X +A Z +A X +A Z +C Y +B Y +C Y +B X +A Z +A Z +A Z +C Y +A Z +A X +B Z +C X +A X +C Z +C X +C Y +A Z +A X +A Z +C Z +A Z +A Z +A Y +C Z +A X +A X +B Z +A Z +C Z +A Z +A X +A Z +A Z +A Z +A Z +A Z +A Z +A Z +A Z +C X +A X +A X +A X +B Y +B X +A X +A Z +A Z +A X +A Z +A X +A X +A Z +B X +A Z +C Z +A Z +C Z +A Z +A Z +C Z +A X +C Z +A X +C X +A Z +A Z +B Z +A Y +B Z +A X +B Z +A Z +A X +A Z +A Z +A X +A Z +B Z +C X +A Z +A X +B Z +C Y +B Z +C X +A Z +A Z +C X +B X +C Z +A Z +A X +A Z +C X +A Z +C Z +C Z +B Z +B Z +A Z +C X +A X +B Y +A Y +A Z +C X +B X +A Z +A Z +B Y +A Z +A Z +C Z +A Z +A X +A Z +B X +C Z +B X +A Z +B Z +C Y +A X +A X +A Z +A Z +A Z +C Y +A X +A Z +A Z +A X +B Z +A Z +C X +C Z +A Z +A X +B Z +A X +C Y +A X +A Z +A Y +C Z +A Y +A Z +C X +C Y +A Z +C Y +A Z +A X +C Y +A Z +A X +A X +B Z +A X +C X +A X +C X +A X +A Z +A X +A Z +A Z +A X +C X +C Z +A Z +C Z +C X +A Z +C Y +A X +A Z +A Z +C Y +A X +B X +C Y +B Z +C Y +A X +A X +C Z +A X +A Z +A X +A X +C X +A X +A Z +B X +C Z +A Y +B Y +A Z +A Z +A Z +A Z +B Y +A Y +A Z +B Z +A Z +A X +C Z +B Y +C Y +A X +A Z +C Z +B Z +A Z +A Z +A Y +C Z +A Z +A Z +C Z +C Z +C Z +A X +B Y +C X +A X +A Z +A Z +B Z +A Y +A X +A Z +B X +A X +A X +A Z +A Y +A Z +A X +B X +A Z +C X +A Z +A X +C X +B X +B Y +B X +A Z +A Z +A Z +A X +B X +A X +B Z +A Y +B Z +C Z +A X +C Z +C X +A Z +C Y +C Y +A Z +A X +A X +A X +B X +A Z +A Y +C Y +B X +A X +A X +A X +C Y +A Z +A Y +A X +C Z +A Z +A Z +A Z +C Z +A X +A Z +C Z +B X +C Y +A Z +B Z +B Z +C Z +C Z +A X +A Z +A Z +B X +B X +A Z +A Z +A Y +C Z +A Z +A X +C Z +A Z +C Z +C Z +A Z +A Z +B Z +A X +B Y +A Z +A X +C Z +A X +B X +A Z +C Y +A Z +C X +C Y +A X +C X +C X +A Z +C Z +C Y +A Z +A Z +A X +A X +C Z +A Y +A Z +A X +B Z +A X +A Z +A Z +A X +B Z +A X +A Z +C X +A Z +A Z +C X +A Z +A X +A Z +A X +B Z +A Z +A Z +C Y +C Y +C Z +C Z +C Y +A X +A X +A X +A Z +A Z +C Y +A Z +C Z +A Z +C Z +B Z +B X +A Y +C Y +A X +A Z +A X +A X +A Z +C Z +C Y +C Y +A Y +A X +A Z +A X +C Z +A X +A Z +A Z +C Y +A X +A Z +A Z +A X +B Y +A Z +A Z +A Z +A Z +C Y +A Z +A X +A X +A Z +A Z +C Y +A Z +A Z +B Z +A Z +A X +A X +A Y +C Z +C Z +A Z +B Z +A Z +A Z +A X +A X +C Z +A Z +A X +A X +A Z +A Z +B Y +A Y +C Y +A X +A Z +C Z +C Y +A Z +C Y +A X +A X +A X +A Z +C Y +C Y +A Z +B X +C Y +A Z +A X +A Z +A Y +C Y +C Z +B Z +A Z +C Y +A X +C Z +A X +C Y +C Z +A Z +C Y +C Y +A Y +B X +A Z +C Z +B Z +B Y +A Z +C Y +A X +A Z +A Z +C Y +A Z +C Z +A Z +A Z +A X +A Z +A Z +C Z +A X +A Z +C Z +C Y +A X +A X +C Z +C Y +A Z +C Y +A Z +A X +A X +A Z +A Z +A X +A Z +C Y +C Z +A Z +B X +C Z +A Z +A Z +A X +B X +A Z +A Y +A X +C Z +B X +A Z +C Y +C Z +C Z +C Z +A Z +A Z +A X +A Z +C Z +C Y +A X +A Z +A Z +A Y +A X +A Z +A Z +C X +B Z +A X +A Z +A X +C Z +A X +C X +A X +C Y +C Y +A X +A X +A Z +B Z +A Z +A Y +B Z +A X +C X +A X +C X +A X +C X +A Z +A X +A X +A X +C Y +A X +A X +C X +C Z +A X +B Y +A X +B Z +A Z +A X +C Z +A Z +A X +A Z +A X +C X +C Z +A X +C Z +C Y +C Y +A X +A X +A X +C Z +C Z +A Z +C Z +A Z +B Z +A Y +B Z +A X +A Z +A Z +A Z +C Z +A Z +A X +A X +B Z +A Z +C Y +C Z +B Z +C Y +C Z +A X +A X +C X +B X +C Z +A Z +A Z +C Z +A X +A Z +A Z +B X +B Z +A Z +A Z +B Z +A Z +A Z +B Z +B Z +C Z +A Z +C Z +A Z +A Z +C Z +A Z +A Z +B Z +A Z +A X +A X +A X +A Z +C Z +A X +A Z +A X +A Z +B Z +B Z +C Z +A Z +A Y +C X +A X +A Z +A X +A X +C X +C Z +B Y +A X +A X +C Y +C Y +A X +A Z +A Z +B Z +B Z +A Z +C Z +A Z +C Z +C X +A Z +A X +A Y +A X +A Z +C Z +A X +A Z +A Z +A Z +A X +C X +B Z +A Z +A Y +C X +A Z +A Z +A Z +A X +A Y +A X +C Y +A Z +C Y +A Z +A Z +C X +A Z +A Y +C Z +A X +A X +A Z +A Y +A Z +A X +C Z +A Z +A Z +B Z +A Z +A Z +C X +B Z +C Y +A X +A Y +B X +A Z +C Z +C X +C Z +A X +A X +A Z +A Z +A X +A Z +B Z +B Z +A Z +B Y +B Z +A X +A X +C Z +A Z +C Y +B Z +C Z +C Z +A Z +A X +B Z +A X +A X +A Z +A Z +A X +B Z +A Z +C Z +A Z +A Z +B X +C Z +B Z +C Y +A Z +A X +A X +B X +A X +B Z +C Y +C Y +B Z +C Y +C Y +A X +A Z +A Z +C Y +B Z +A X +A Z +A X +B X +A X +C Y +A X +A X +B Z +A X +B X +A Z +C Y +B Z +A X +A Z +A X +A X +B X +A X +A X +A X +A Z +A Z +C Y +A Z +B Z +C Z +C Y +C Z +A X +A Z +A X +C Z +C Z +C Z +C Y +A X +B X +B X +C X +C Z +C X +C Z +B Z +A Y +A X +C X +B X +A X +A X +A Z +A X +A Z +A X +A X +A Z +A Z +C Z +A X +C Y +C Y +C Z +A Z +A X +A Z +A X +A Z +A Y +A Z +A X +A X +A Z +A X +A Y +A Y +C X +A Y +C Y +C X +A Z +C Z +C Y +C Z +A Z +C X +A X +C Z +A Z +C Y +B Z +A Z +A Z +A Z +C Y +A X +A X +A Z +A Z +A Z +B Z +C Z +A X +C Y +A X +A Z +A X +C X +C Z +A Z +C Y +A Y +A Y +A Z +A X +A Z +A Y +A X +C Z +A Z +A Z +A X +A X +B Z +B Y +B Y +C X +A Z +A Z +C Z +A X +A Z +C Y +B X +C Y +A Z +A Z +A X +A Z +A X +A X +C Z +A Z +A Z +A X +A X +C Y +A X +A X +C Y +A Y +C X +A X +C Y +A Y +A Z +B Y +A X +C Z +B X +A X +C Z +A Z +B Z +A Z +A Z +C X +A Z +B Z +C X +A Z +C Y +A Z +C Z +A Z +C X +A X +A Z +A Y +B X +A X +B X +A Z +A Z +C Y +A Z +C Z +A Z +A Z +A Z +C X +A Z +B X +A X +A Z +C Z +A Z +A X +C Y +A Z +C Y +A Z +A Z +C Z +A X +A Z +A Z +B X +A Z +A X +C Z +B Y +A Z +A X +C Z +A X +A Z +A Z +A Z +C Z +A Z +A Z +C X +A X +A X +C X +A X +A X +B Z +A Z +A X +B X +A X +A Z +C Y +A Z +B X +C Y +A X +C Z +A Z +B Z +A X +A Z +A Z +C Z +A X +C Z +A X +C X +A Y +A X +A Z +C X +A X +A X +A X +A X +A Z +A X +B Z +C Z +C Y +B Z +B Z +B X +A Z +A X +B Z +A Z +A X +C Z +A Z +C Y +B Z +C Y +A X +C X +A X +A Z +C Y +A Z +A X +A Y +C Y +C Y +A Z +A Z +C Y +A Z +A Z +A X +C Y +B Y +A X +A X +A X +C Y +B X +A Z +A Y +A Z +A Z +A X +C Z +A Z +A Z +C X +A Z +B Z +B X +A X +C Z +A X +C Y +A Z +C Z +C Y +C X +C Y +A Z +A X +A Z +A Z +A Z +B Z +A Z +C Z +A Z +C Z +B Z +C Z +C Z +A Z +A Z +B X +A Z +A X +A Z +A X +A Y +A Z +B Z +C X +A Z +A Z +B X +A X +C X +C Z +A X +A Z +A X +C Y +C Z +A Z +C Y +A X +A Z +A Z +B Z +C Y +A Z +A Z +C Z +A X +C X +A Z +A Z +A Y +C Z +C Z +A Z +A X +B Z +A X +A X +A X +A X +A Z +A Z +A X +A X +C Z +C Y +C Y +C Y +A Z +C X +B Z +C Y +C Z +A X +A X +A Z +C Z +C Z +A Y +C Y +B X +C Y +A X +A X +A Y +A X +A Z +A Z +A X +A Z +A Z +A Z +A X +A Z +B Z +A X +A X +A X +C Z +C X +A Z +C Y +C Z +A X +A Z +A Z +A X +A Z +A X +B Z +A Z +A Z +A Z +C Y +C Z +B Z +A Z +B Z +A X +A X +A X +C Y +A Z +A Z +A Z +C X +A X +A X +A Z +A Z +A Z +A Z +B Z +A X +A Z +A X +C Z +A Z +A Z +A Z +B Z +A Y +A Z +C Z +B Z +C Y +A Z +A X +C Y +A X +A X +A Z +A Z +A X +B Z +B X +C Z +C Z +A Y +A Z +A X +A Z +A Z +A Z +A Z +A Z +B Z +A Z +B X +A Z +A Z +C Z +B Z +A Z +C X +B Z +C X +B Z +A Z +A Z +A Z +A Z +A X +B Z +A X +B Z +C Y +A Z +A Z +C X +A X +A Z +A Y +A Z +C Y +C X +C Z +A X +A Z +C Z +A Z +A X +A Z +B Z +A X +A Z +B Z +C Y +A Z +C Y +A Z +C Y +B X +C Y +A Z +B Z +A X +B Z +B Z +C X +A Z +C Z +A Z +C Z +A Z +C Z +B Z +C Y +C Z +A Z +C Y +A Z +C X +B Y +B Y +C X +C Y +A Z +C Z +A Z +C X +A Z +A Z +C Y +A Z +A Z +C X +A Y +A X +A X +B Z +A Z +C Z +A Z +B Z +C Y +C Z +A Z +C Y +B X +C Z +A X +C X +C Y +C Y +C Y +A Z +A Z +B Y +C Y +A Z +A X +A Z +A X +A Z +C X +C Z +A X +C Z +B X +A X +C Z +A Z +C X +A Y +A Z +A X +A Z +C Z +B Z +B Z +A Z +C Y +A Z +C Z +C Y +C Z +A Z +A Z +B X +C X +C Z +A X +A Z +A Y +C Y +A X +A Z +C Y +A Z +B X +A Z +A Z +A Z +A Z +C X +A X +A Z +A Y +A X +B Y +A X +A X +A X +A X +B Z +A X +C Y +C X +A X +A Z +A X +A Z +A Z +A Z +A Z +A X +A Z +C X +C Z +C Z +A X +B Y +A X +C Y +A X +C Z +A X +A Z +A Z +A Z +A Z +C X +A X +C Y +A Z +A Z +C Y +A Z +A X +A Z +A X +A Z +B Y +C Y +B Y +C Y +A Y +A Z +C X +B X +A X +A Y +C Z +A X +B Z +A X +A X +A Y +A X +A Z +A Z +C Z +C X +A Z +C Y +A Z +A Z +C X +A Y +A Z +A X +A Z +A Z +C X +A Z +A Z +A Z +C Y +A X +A X +A X +C Z +A Z +C Y +A X +A X +C Y +C X +C Y +A Y +C X +A Z +A Z +A Y +C X +A Z +A Z +A Z +C Y +C X +A Z +B Z +A Z +A X +C Y +A X +C Y +C Y +A X +C Y +A X +C Y +B Z +A Z +A X +A Z +A X +A X +A Z +A X +A X +C Z +A Z +B Y +C X +B X +B X +A Z +A Y +B Y +A Z +A X +A X +C Y +C X +B Z +A Z +C Y +C X +C Y +A Y +A Z +C X +A X +A X +A Z +A Z +B Z +C X +A Z +B Z +A X +B Y +C X +A X +A Y +C X +A X +C Y +A Z +A Z +A X +A X +C Z +C Z +B Z +A X +B Z +B Y +A Z +A Z +C Y +A Z +B Y +A Z +A X +C Z +C Z +A X +A X +A X +A Z +A Z +C Y +A X +A X +A Z +A X +C X +A Z +A X +B Z +B X +A X +A X +A Z +B Z +A X +A Z +C Y +C Y +B Z +C Z +A X +B X +B X +A Z +A X +A Z +C Y +A X +A X +B Y +C Y +A X +A X +C Y +A Z +A Z +C Z +A Z +B Z +A Y +A Z +C Y +B Y +A X +C X +A X +C Z +A Z +A X +A Z +A Z +A X +B Z +C Z +A Z +A X +C X +A X +C Y +B Z +B X +C Z +C X +A X +A X +A Z +A X +C Y +B Z +A Z +C Z +A Z +A Z +A X +B X +A X +A Z +A X +A X +A Z +A Z +A Y +A Z +C Z +B Z +A X +A X +A X +A Z +B Z +A Z +A Z +C Z +C Y +C Y +A Z +A X +A Z +C Z +A X +A X +A Z +A Z +C X +B Y +A X +B Z +B Z +A Z +A Z +C Z +C Z +A X +A X +A Z +C Z +A Z +C Z +B X +A X +A Z +A Z +C Z +A X +A Z +B Y +B X +A X +C Y +C X +C Y +B X +A X +C Y +A Z +B Y +A Y +A X +C Y +A Z +A Z +A Z +A Z +A Z +C Z +A Z +A Z +A Z +C X +B X +C Z +A X +B X +A X +C Y +A X +C X +A X +A Z +A Z +B X +A X +A Z +A X +C Z +A Z +A Z +A X +C Z +A Z +C X +A Z +A Z +A Z +A Z +B Z +A X +A X +C Y +A Z +A Z +B Z +A X +A Z +A Y +A Z +C X +B Z +A Z +A X +B Y +A Z +A X +C X +C X +A X +A Z +A X +A Z +B Z +B Y +A Y +A Z +C Y +B Z +A Z +C X +C Y +C Z +C X +A X +A Z +A X +A X +A Z +A X +A X +A X +A Z +C Z +C Y +A Z +A X +C X +B Z +C Z +C Y +C Y +A Z +A X +A Z +A Z +A Z +A X +A Z +A Z +A X +C Z +A X +A X +A Z +C X +B Y +A X +C Z +A X +C X +A Z +A X +A Y +C Z +A X +A Z +C X +B X +A Z +A Z +A X +A X +A Z +C Y +C Z +A X +A Z +C Z +C X +A X +A Z +A X +A X +B X +C Z +B Z +A Z +A X +A X +B Y +A Z +A X +A X +A Z +A Z +A Z +A X +C Y +A Z +C Y +A Z +A Z +A X +C Z +A Z +B X +A X +C Z +A X +A Y +B X +C X +A X +A X +A Z +A X +A X +A X +C Y +A Y +A Z +B Z +B Z +B Z +A Z +A Z +A Z +A X +B X +C Y +A X +A Z +C Z +B Y +A X +A Z +A Z +A X +A X +B Z +A X +C Y +A Z +A X +A X +A Z +A Z +A Z +A Z +A Z +A X +A Z +A X +A X +C Z +A X +C Z +A Z +C Y +A X +A Z +C Z +A Z +A Z +A X +A X +A Z +A X +A Z +B Z +A X +A X +C X +A Z +A X +A Z +C Y +C Y +C Y +C Y +C Z +A Z +B X +C Z +A X +A Z +C Y +A X +A Z +B X +A Z +C X +C Z +C X +C X +A Z +A Z +B X +A Z +A Z +A Z +B Z +A Z +C Z +A X +A X +A Z +A X +A Z +C Z +C Z +A Z +C Z +C X +A Z +A X +B Z +A X +B Y +C X +A X +A Y +A Z +A Z +A X +A X +A Z +A X +A Z +A X +A Z +A X +A Y +A X +C Z +A Z +A Z +A X +A X +A Z +A X +C Y +C Z +A Z +A Y +A Z +A X +A Z +C X +B X +A Z +C Z +B Y +A Z +A Z +C Y +A X +A Z +A Z +C Z +C Y +A Z +B Y +A X +C Y +A X +A X +A Z +C Z +A Z +A Z +A X +C Z +A X +C Y +C Y +A X +B X +C X +A Y +A X +A Z +B X +A X +B Z +A Z +A X +C X +A X +B X +A X +A Z +A X +C Y +A Z +C Z +C Y +A X +B X +C Y +C X +A X +A Z +A X +A Z +A X +A X +A Z +A Z +A X +A Z +A Y +A X +A X +A Y +A Z +A Z +C Z +A X +A Z +A X +A X +B X +A X +B Y +C Y +A Z +B Z +A Z +B Y +A Z +C Y +A Z +A X +A X +A Z +C X +C Z +B X +A X +A Z +A X +A Z +A Z +B X +A Z +A X +C Z +B Y +C Y +C X +A X +A Z +A X +C Y +A Z +C Z +A X +A X +A X +A Z +A Z +A Z +B X +C X +A Y +B Z +A X +A Z +A Z +C X +C Y +A X +A Z +C Y +A X +A Z +A X +A Z +A X +A X +B Z +A X +C X +A X +A X +A X +A Z +A Z +A X +A Z +C Y +C Z +B Z +B X +A Z +A X +C X +C Y +A X +B Z +B Z +A Z +B Z +C Y +A X +A X +A X +C Y +A Z +A X +A Z +A Z +A Z +A X +A Z +A X +A Z +C Y +A X +C X +C Y +C Y +C X +A X +C Y +A Z +C Y +B Z +B Z +C Z +A X +B X +C X +A Z +A Y +A Z +B Z +A Z +B Z +A X +A X +A Z +A Z +A Y +A Z +A X +A Y +A Z +A Z +A Z +A Z +B X +A Z +A Z +A Z +A Z +C Y +B Y +C X +A Z +B Z +B X +A X +C Z +A Z +C Z +A Z +A X +A X +A X +A X +A X +A Z +C Y +A X +C X +A Y +C X +C X +A X +A Z +A X +C Z +A X +C Y +B Z +C Y +C Z +B X +A Z +C Y +A Z +C Y +A X +A X +A X +A Z +A Z +A Z +A Z +C Z +C Y +A X +C Y +B Y +A X +A X +A Z +C Y +C Z +A X +A X +A Z +A Z +A X +A X +A Z diff --git a/2022/day02/part1.py b/2022/day02/part1.py new file mode 100644 index 0000000..d7483b8 --- /dev/null +++ b/2022/day02/part1.py @@ -0,0 +1,53 @@ +""" +Part1 +""" + +file = open("input/input", "r", encoding="utf-8") + +SCORES = {"ROCK": 1, "PAPER": 2, "SCISSORS": 3, "WIN": 6, "DRAW": 3, "LOSS": 0} + +MAPPINGS = { + "A": "ROCK", + "B": "PAPER", + "C": "SCISSORS", + "X": "ROCK", + "Y": "PAPER", + "Z": "SCISSORS", +} + +BETTER_THAN = { + "ROCK": "PAPER", + "PAPER": "SCISSORS", + "SCISSORS": "ROCK", +} + +score = 0 + +for line in file.readlines(): + line = line.strip() + opponent, ours = line.split(" ") + + opponent = MAPPINGS[opponent] + ours = MAPPINGS[ours] + + score_this_round = 0 + score_this_round += SCORES[ours] + + print("opp:", opponent, "our", ours) + + if opponent == ours: + outcome = "DRAW" + elif ours == BETTER_THAN[opponent]: + outcome = "WIN" + else: + outcome = "LOSS" + + score_this_round += SCORES[outcome] + score += score_this_round + + print(outcome, "Score:", score_this_round) + print() + + +print() +print(score) diff --git a/2022/day02/part2.py b/2022/day02/part2.py new file mode 100644 index 0000000..474e26c --- /dev/null +++ b/2022/day02/part2.py @@ -0,0 +1,55 @@ +""" +Part2 +""" + +file = open("input/input", "r", encoding="utf-8") + +SCORES = {"ROCK": 1, "PAPER": 2, "SCISSORS": 3, "WIN": 6, "DRAW": 3, "LOSS": 0} + +MAPPINGS = { + "A": "ROCK", + "B": "PAPER", + "C": "SCISSORS", + "X": "LOSS", + "Y": "DRAW", + "Z": "WIN", +} + +BETTER_THAN = { + "ROCK": "PAPER", + "PAPER": "SCISSORS", + "SCISSORS": "ROCK", +} + +WORSE_THAN = {"ROCK": "SCISSORS", "PAPER": "ROCK", "SCISSORS": "PAPER"} + +score = 0 + +for line in file.readlines(): + line = line.strip() + opponent, outcome = line.split(" ") + + opponent = MAPPINGS[opponent] + outcome = MAPPINGS[outcome] + + score_this_round = 0 + score_this_round += SCORES[outcome] + + if outcome == "WIN": + ours = BETTER_THAN[opponent] + elif outcome == "DRAW": + ours = opponent + else: + ours = WORSE_THAN[opponent] + + score_this_round += SCORES[ours] + + print("opp:", opponent, "our", ours) + score += score_this_round + + print(outcome, "Score:", score_this_round) + print() + + +print() +print(score)