work on day7, not complete

This commit is contained in:
Tyrel Souza 2023-12-07 16:50:38 -05:00
parent d921354b2a
commit 240f78775e
No known key found for this signature in database
GPG Key ID: F3614B02ACBE438E
3 changed files with 1088 additions and 0 deletions

1000
2023/full/day07.txt Normal file

File diff suppressed because it is too large Load Diff

83
2023/python/day07.py Normal file
View File

@ -0,0 +1,83 @@
import matrix
import shared
from dataclasses import dataclass
from collections import defaultdict
from pprint import pprint
STRENGTHS = list(reversed("A, K, Q, J, T, 9, 8, 7, 6, 5, 4, 3, 2".split(", ")))
STRENGTH_HANDS = [
"Five of a Kind",
"Four of a Kind",
"Full House",
"Three of a Kind",
"Two Pair",
"One Pair",
"High Card",
]
def determine_hand(cards):
card_set = set(cards)
if len(card_set) == 1:
return "Five of a Kind"
same_cards = sorted([cards.count(a) for a in card_set])
if len(same_cards) == 2:
if max(same_cards) == 4:
return "Four of a Kind"
elif max(same_cards) == 3:
return "Full House"
elif len(same_cards) == 3:
if max(same_cards) == 3:
return "Three of a Kind"
else:
return "Two Pair"
elif len(same_cards) == 4:
return "One Pair"
return "High Card"
@dataclass
class Hand:
cards: str
bid: int
def counts(self):
return Counter(self.cards)
def kind(self):
cards = [c for c in self.cards]
return determine_hand(self.cards)
# @shared.profile
def part1(rows):
hands = defaultdict(list)
for row in rows:
cards, bid = row.split()
hand = Hand(cards=cards, bid=int(bid))
hands[hand.kind()].append(hand)
pprint(hands)
# @shared.profile
def part2(rows):
pass
def main():
rows = [row for row in shared.load_rows(7)]
with shared.elapsed_timer() as elapsed:
part1(rows)
print("🕒", elapsed())
rows = [row for row in shared.load_rows(1,True)]
with shared.elapsed_timer() as elapsed:
part2(rows)
print("🕒", elapsed())
if __name__ == "__main__":
main()

5
2023/samples/day07.txt Normal file
View File

@ -0,0 +1,5 @@
32T3K 765
T55J5 684
KK677 28
KTJJT 220
QQQJA 483