Solve 2022/02
parent
fc6103528f
commit
4534eccffd
@ -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?_
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
A Y
|
||||||
|
B X
|
||||||
|
C Z
|
File diff suppressed because it is too large
Load Diff
@ -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)
|
@ -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)
|
Loading…
Reference in New Issue