annotate day7.txt @ 19:1e16a25a9553

Strip down the text to just the puzzle, not the fluff
author IBBoard <dev@ibboard.co.uk>
date Mon, 11 Dec 2023 20:38:55 +0000
parents 9ec95ff0d33d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 --- Day 7: Camel Cards ---
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 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.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 Every hand is exactly one type. From strongest to weakest, they are:
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 Five of a kind, where all five cards have the same label: AAAAA
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8 Four of a kind, where four cards have the same label and one card has a different label: AA8AA
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9 Full house, where three cards have the same label, and the remaining two cards share a different label: 23332
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 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
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11 Two pair, where two cards share one label, two other cards share a second label, and the remaining card has a third label: 23432
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 One pair, where two cards share one label, and the other three cards have a different label from the pair and each other: A23A4
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 High card, where all cards' labels are distinct: 23456
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 Hands are primarily ordered based on type; for example, every full house is stronger than any three of a kind.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 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.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 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).
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21 To play Camel Cards, you are given a list of hands and their corresponding bid (your puzzle input). For example:
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23 32T3K 765
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24 T55J5 684
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25 KK677 28
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26 KTJJT 220
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
27 QQQJA 483
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 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.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
30
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31 So, the first step is to put the hands in order of strength:
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 32T3K is the only one pair and the other hands are all a stronger type, so it gets rank 1.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
34 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.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
35 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.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37 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.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
38
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
39 Find the rank of every hand in your set. What are the total winnings?
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
40
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
41
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
42 --- Part Two ---
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
43
19
1e16a25a9553 Strip down the text to just the puzzle, not the fluff
IBBoard <dev@ibboard.co.uk>
parents: 9
diff changeset
44 Now, J cards are jokers - wildcards that can act like whatever card would make the hand the strongest type possible.
9
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
45
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
46 To balance this, J cards are now the weakest individual cards, weaker even than 2. The other cards stay in the same order: A, K, Q, T, 9, 8, 7, 6, 5, 4, 3, 2, J.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
47
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
48 J cards can pretend to be whatever card is best for the purpose of determining hand type; for example, QJJQ2 is now considered four of a kind. However, for the purpose of breaking ties between two hands of the same type, J is always treated as J, not the card it's pretending to be: JKKK2 is weaker than QQQQ2 because J is weaker than Q.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
49
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
50 Now, the above example goes very differently:
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
51
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
52 32T3K 765
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
53 T55J5 684
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
54 KK677 28
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
55 KTJJT 220
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
56 QQQJA 483
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
57
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
58 32T3K is still the only one pair; it doesn't contain any jokers, so its strength doesn't increase.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
59 KK677 is now the only two pair, making it the second-weakest hand.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
60 T55J5, KTJJT, and QQQJA are now all four of a kind! T55J5 gets rank 3, QQQJA gets rank 4, and KTJJT gets rank 5.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
61
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
62 With the new joker rule, the total winnings in this example are 5905.
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
63
9ec95ff0d33d Add Day 7 solutions with string sorting
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
64 Using the new joker rule, find the rank of every hand in your set. What are the new total winnings?