Compare commits
2 Commits
f2821aac4c
...
4534eccffd
Author | SHA1 | Date |
---|---|---|
Alfred Melch | 4534eccffd | 2 years ago |
Alfred Melch | fc6103528f | 2 years ago |
@ -0,0 +1,68 @@
|
|||||||
|
https://adventofcode.com/2022/day/1
|
||||||
|
|
||||||
|
## \--- Day 1: Calorie Counting ---
|
||||||
|
|
||||||
|
Santa's reindeer typically eat regular reindeer food, but they need a lot of
|
||||||
|
[magical energy](/2018/day/25) to deliver presents on Christmas. For that,
|
||||||
|
their favorite snack is a special type of _star_ fruit that only grows deep in
|
||||||
|
the jungle. The Elves have brought you on their annual expedition to the grove
|
||||||
|
where the fruit grows.
|
||||||
|
|
||||||
|
To supply enough magical energy, the expedition needs to retrieve a minimum of
|
||||||
|
_fifty stars_ by December 25th. Although the Elves assure you that the grove
|
||||||
|
has plenty of fruit, you decide to grab any fruit you see along the way, just
|
||||||
|
in case.
|
||||||
|
|
||||||
|
Collect stars by solving puzzles. Two puzzles will be made available on each
|
||||||
|
day in the Advent calendar; the second puzzle is unlocked when you complete
|
||||||
|
the first. Each puzzle grants _one star_. Good luck!
|
||||||
|
|
||||||
|
The jungle must be too overgrown and difficult to navigate in vehicles or
|
||||||
|
access from the air; the Elves' expedition traditionally goes on foot. As your
|
||||||
|
boats approach land, the Elves begin taking inventory of their supplies. One
|
||||||
|
important consideration is food - in particular, the number of _Calories_ each
|
||||||
|
Elf is carrying (your puzzle input).
|
||||||
|
|
||||||
|
The Elves take turns writing down the number of Calories contained by the
|
||||||
|
various meals, snacks, rations, etc. that they've brought with them, one item
|
||||||
|
per line. Each Elf separates their own inventory from the previous Elf's
|
||||||
|
inventory (if any) by a blank line.
|
||||||
|
|
||||||
|
For example, suppose the Elves finish writing their items' Calories and end up
|
||||||
|
with the following list:
|
||||||
|
|
||||||
|
[code]
|
||||||
|
|
||||||
|
1000
|
||||||
|
2000
|
||||||
|
3000
|
||||||
|
|
||||||
|
4000
|
||||||
|
|
||||||
|
5000
|
||||||
|
6000
|
||||||
|
|
||||||
|
7000
|
||||||
|
8000
|
||||||
|
9000
|
||||||
|
|
||||||
|
10000
|
||||||
|
|
||||||
|
[/code]
|
||||||
|
|
||||||
|
This list represents the Calories of the food carried by five Elves:
|
||||||
|
|
||||||
|
* The first Elf is carrying food with `1000`, `2000`, and `3000` Calories, a total of `_6000_` Calories.
|
||||||
|
* The second Elf is carrying one food item with `_4000_` Calories.
|
||||||
|
* The third Elf is carrying food with `5000` and `6000` Calories, a total of `_11000_` Calories.
|
||||||
|
* The fourth Elf is carrying food with `7000`, `8000`, and `9000` Calories, a total of `_24000_` Calories.
|
||||||
|
* The fifth Elf is carrying one food item with `_10000_` Calories.
|
||||||
|
|
||||||
|
In case the Elves get hungry and need extra snacks, they need to know which
|
||||||
|
Elf to ask: they'd like to know how many Calories are being carried by the Elf
|
||||||
|
carrying the _most_ Calories. In the example above, this is _`24000`_ (carried
|
||||||
|
by the fourth Elf).
|
||||||
|
|
||||||
|
Find the Elf carrying the most Calories. _How many total Calories is that Elf
|
||||||
|
carrying?_
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
1000
|
||||||
|
2000
|
||||||
|
3000
|
||||||
|
|
||||||
|
4000
|
||||||
|
|
||||||
|
5000
|
||||||
|
6000
|
||||||
|
|
||||||
|
7000
|
||||||
|
8000
|
||||||
|
9000
|
||||||
|
|
||||||
|
10000
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,28 @@
|
|||||||
|
"""
|
||||||
|
Part 1
|
||||||
|
"""
|
||||||
|
|
||||||
|
print("Hello World!")
|
||||||
|
|
||||||
|
file = open("input/input", "r")
|
||||||
|
|
||||||
|
MAXIMUM = 0
|
||||||
|
current = 0
|
||||||
|
|
||||||
|
for line in file.readlines():
|
||||||
|
line = line.strip()
|
||||||
|
|
||||||
|
if line == "":
|
||||||
|
# print("NEXT ELF")
|
||||||
|
if current >= MAXIMUM:
|
||||||
|
MAXIMUM = current
|
||||||
|
current = 0
|
||||||
|
else:
|
||||||
|
line = int(line)
|
||||||
|
current += line
|
||||||
|
# print(line)
|
||||||
|
|
||||||
|
if current >= MAXIMUM:
|
||||||
|
MAXIMUM = current
|
||||||
|
|
||||||
|
print(MAXIMUM)
|
@ -0,0 +1,31 @@
|
|||||||
|
"""
|
||||||
|
Part 2
|
||||||
|
"""
|
||||||
|
|
||||||
|
print("Hello World!")
|
||||||
|
|
||||||
|
file = open("input/input", "r")
|
||||||
|
|
||||||
|
ELVES = []
|
||||||
|
current = 0
|
||||||
|
|
||||||
|
for line in file.readlines():
|
||||||
|
line = line.strip()
|
||||||
|
|
||||||
|
if line == "":
|
||||||
|
ELVES.append(current)
|
||||||
|
current = 0
|
||||||
|
else:
|
||||||
|
line = int(line)
|
||||||
|
current += line
|
||||||
|
|
||||||
|
ELVES.append(current)
|
||||||
|
|
||||||
|
|
||||||
|
ELVES.sort()
|
||||||
|
|
||||||
|
ELVES = list(reversed(ELVES))
|
||||||
|
|
||||||
|
answer = ELVES[0] + ELVES[1] + ELVES[2]
|
||||||
|
|
||||||
|
print(answer)
|
@ -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