Start on 2023 day 7
This commit is contained in:
parent
a28411f503
commit
bf1fec32ee
@ -66,3 +66,28 @@ in this example, if you multiply these values together, you get **288** (4 * 8 *
|
||||
|
||||
Determine the number of ways you could beat the record in each race. **What do you get if you multiply these numbers
|
||||
together?**
|
||||
|
||||
## Part 2
|
||||
|
||||
As the race is about to start, you realize the piece of paper with race times and record distances you got earlier
|
||||
actually just has very bad kerning. There's really **only one race** - ignore the spaces between the numbers on each line.
|
||||
|
||||
So, the example from before:
|
||||
|
||||
```
|
||||
Time: 7 15 30
|
||||
Distance: 9 40 200
|
||||
```
|
||||
|
||||
...now instead means this:
|
||||
|
||||
```
|
||||
Time: 71530
|
||||
Distance: 940200
|
||||
```
|
||||
|
||||
Now, you have to figure out how many ways there are to win this single race. In this example, the race lasts for
|
||||
**71530 milliseconds** and the record distance you need to beat is **940200 millimeters**.
|
||||
You could hold the button anywhere from `14` to `71516` milliseconds and beat the record, a total of **71503** ways!
|
||||
|
||||
**How many ways can you beat the record in this one much longer race?**
|
78
2023/day7/README.md
Normal file
78
2023/day7/README.md
Normal file
@ -0,0 +1,78 @@
|
||||
# Day 7: Camel Cards
|
||||
|
||||
## Part 1
|
||||
|
||||
Your all-expenses-paid trip turns out to be a one-way, five-minute ride in an airship. (At least it's a **cool**
|
||||
airship!) It drops you off at the edge of a vast desert and descends back to Island Island.
|
||||
|
||||
"Did you bring the parts?"
|
||||
|
||||
You turn around to see an Elf completely covered in white clothing, wearing goggles, and riding a large camel.
|
||||
|
||||
"Did you bring the parts?" she asks again, louder this time. You aren't sure what parts she's looking for; you're
|
||||
here to figure out why the sand stopped.
|
||||
|
||||
"The parts! For the sand, yes! Come with me; I will show you." She beckons you onto the camel.
|
||||
|
||||
After riding a bit across the sands of Desert Island, you can see what look like very large rocks covering half of the
|
||||
horizon. The Elf explains that the rocks are all along the part of Desert Island that is directly above Island Island,
|
||||
making it hard to even get there. Normally, they use big machines to move the rocks and filter the sand, but the
|
||||
machines have broken down because Desert Island recently stopped receiving the **parts** they need to fix the machines.
|
||||
|
||||
You've already assumed it'll be your job to figure out why the parts stopped when she asks if you can help.
|
||||
You agree automatically.
|
||||
|
||||
Because the journey will take a few days, she offers to teach you the game of **Camel Cards**. Camel Cards is sort of
|
||||
similar to poker except it's designed to be easier to play while riding a camel.
|
||||
|
||||
In Camel Cards, you get a list of **hands**, and your goal is to order them based on the strength of each hand.
|
||||
A hand consists of five cards labeled one of `A`, `K`, `Q`, `J`, `T`, `9`, `8`, `7`, `6`, `5`, `4`, `3`, or `2`.
|
||||
The relative strength of each card follows this order, where `A` is the highest and `2` is the lowest.
|
||||
|
||||
Every hand is exactly one type. From strongest to weakest, they are:
|
||||
|
||||
- **Five of a kind**, where all five cards have the same label: `AAAAA`
|
||||
- **Four of a kind**, where four cards have the same label and one card has a different label: `AA8AA`
|
||||
- **Full house**, where three cards have the same label, and the remaining two cards share a different label: `23332`
|
||||
- **Three of a kind**, where three cards have the same label, and the remaining two cards are each different from any other card in the hand: `TTT98`
|
||||
- **Two pair**, where two cards share one label, two other cards share a second label, and the remaining card has a third label: `23432`
|
||||
- **One pair**, where two cards share one label, and the other three cards have a different label from the pair and each other: `A23A4`
|
||||
- **High card**, where all cards' labels are distinct: `23456`
|
||||
|
||||
Hands are primarily ordered based on type; for example, every **full house** is stronger than any **three of a kind**.
|
||||
|
||||
If two hands have the same type, a second ordering rule takes effect. Start by comparing the **first card in each hand**.
|
||||
If these cards are different, the hand with the stronger first card is considered stronger. If the first card in each
|
||||
hand have the **same label**, however, then move on to considering the second card in each hand. If they differ,
|
||||
the hand with the higher second card wins; otherwise, continue with the third card in each hand, then the fourth,
|
||||
then the fifth.
|
||||
|
||||
So, `33332` and `2AAAA` are both four of a kind hands, but `33332` is stronger because its first card is stronger.
|
||||
Similarly, `77888` and `77788` are both a full house, but `77888` is stronger because its third card is stronger
|
||||
(and both hands have the same first and second card).
|
||||
|
||||
To play Camel Cards, you are given a list of hands and their corresponding bid (your puzzle input). For example:
|
||||
|
||||
```
|
||||
32T3K 765
|
||||
T55J5 684
|
||||
KK677 28
|
||||
KTJJT 220
|
||||
QQQJA 483
|
||||
```
|
||||
|
||||
This example shows five hands; each hand is followed by its **bid** amount. Each hand wins an amount equal to its bid
|
||||
multiplied by its **rank**, where the weakest hand gets rank 1, the second-weakest hand gets rank 2, and so on up to
|
||||
the strongest hand. Because there are five hands in this example, the strongest hand will have rank 5 and its bid will
|
||||
be multiplied by 5.
|
||||
|
||||
So, the first step is to put the hands in order of strength:
|
||||
|
||||
- `32T3K` is the only **one pair** and the other hands are all a stronger type, so it gets rank **1**.
|
||||
- `KK677` and `KTJJT` are both **two pair**. Their first cards both have the same label, but the second card of `KK677` is stronger (K vs T), so `KTJJT` gets rank **2** and `KK677` gets rank **3**.
|
||||
- `T55J5` and `QQQJA` are both three of a kind. `QQQJA` has a stronger first card, so it gets rank **5** and `T55J5` gets rank **4**.
|
||||
|
||||
Now, you can determine the total winnings of this set of hands by adding up the result of multiplying each hand's bid
|
||||
with its rank (765 * 1 + 220 * 2 + 28 * 3 + 684 * 4 + 483 * 5). So the total winnings in this example are 6440.
|
||||
|
||||
Find the rank of every hand in your set. **What are the total winnings?**
|
5
2023/day7/src/example-input.txt
Normal file
5
2023/day7/src/example-input.txt
Normal file
@ -0,0 +1,5 @@
|
||||
32T3K 765
|
||||
T55J5 684
|
||||
KK677 28
|
||||
KTJJT 220
|
||||
QQQJA 483
|
1000
2023/day7/src/input.txt
Normal file
1000
2023/day7/src/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,12 @@
|
||||
const FILE_STR: &str = include_str!("input.txt");
|
||||
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
const EXAMPLE_FILE_STR: &str = include_str!("example-input.txt");
|
||||
|
||||
use super::*;
|
||||
}
|
Loading…
Reference in New Issue
Block a user