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