100 Days of Code (48 Part Series)
1 Day 1: Two Sum
2 Day 2: Check Prime
… 44 more parts…
3 Day 3: Hex Colour
4 Day 4: Repeating Numbers
5 Day 5: Nearest Prime Numbers
6 Day 6: Anagram Detector
7 Day 7: Poker ID
8 Day 8: Bubble Sort
9 Day 9: Password Generator
10 Day 10: Array Search
11 Day 11: Rock, Paper, Scissors
12 Day 12: List Shuffle
13 Day 13: Validate ISBN
14 Day 14: HTML Markup Generator
15 Day 15: Pascal’s Triangle
16 Day 16: Pascal’s Pyramid
17 Day 17: d20 Dice Roller
18 Day 18: Base64
19 Day 19: Vigenère cipher
20 Day 20: Seven-segment display
21 Day 21: Insertion Sort
22 Day 22: Binary-Decimal
23 Day 23: Ducci sequence
24 Day 24: Shell Sort
25 Day 25: Calculator
26 Day 26: Merge Sort
27 Day 27: Bucket Sort
28 Day 28: Counting Sort
29 Day 29: Heap Sort
30 Day 30: Quick Sort
31 Day 31: Radix Sort
32 Day 32: Shaker Sort
33 Day 33: Stooge Sort
34 Day 34: Consuming a RESTful API with React
35 Day 35: Adding Machine
36 Day 36: React Form Validation
37 Day 37: Time Format Converter
38 Day 38: React Stopwatch
39 Day 39: Blackjack Checker
40 Day 40: Password Guessing Game
41 Day 41: String Case
42 Day 42: Tip Calculator
43 Day 43: Twitter Auto-reply
44 Day 44: React Currency Converter
45 Day 45: Phonebook
46 Day 46: Sudoku Generator
47 Day 47: Binary Search Tree
48 Day 48: AVL Tree
Identify a hand in poker.
<span>#!/usr/bin/python3 </span><span>def</span> <span>determine_hand</span><span>(</span><span>hand</span><span>):</span><span>card_value</span> <span>=</span> <span>dict</span><span>(</span><span>zip</span><span>(</span><span>'</span><span>2 3 4 5 6 7 8 9 T J Q K A</span><span>'</span><span>.</span><span>split</span><span>(),</span> <span>range</span><span>(</span><span>14</span><span>)))</span><span>cards</span> <span>=</span> <span>[]</span><span>suits</span> <span>=</span> <span>[]</span><span>for</span> <span>card</span> <span>in</span> <span>hand</span><span>.</span><span>split</span><span>():</span><span>c</span><span>,</span> <span>s</span> <span>=</span> <span>list</span><span>(</span><span>card</span><span>)</span><span>cards</span><span>.</span><span>append</span><span>(</span><span>c</span><span>)</span><span>suits</span><span>.</span><span>append</span><span>(</span><span>s</span><span>)</span><span>max_suit</span> <span>=</span> <span>max</span><span>([</span><span>suits</span><span>.</span><span>count</span><span>(</span><span>a</span><span>)</span> <span>for</span> <span>a</span> <span>in</span> <span>suits</span><span>])</span><span>same_cards</span> <span>=</span> <span>sorted</span><span>([</span><span>cards</span><span>.</span><span>count</span><span>(</span><span>a</span><span>)</span> <span>for</span> <span>a</span> <span>in</span> <span>set</span><span>(</span><span>cards</span><span>)])</span><span>card_nums</span> <span>=</span> <span>sorted</span><span>([</span><span>card_value</span><span>[</span><span>a</span><span>]</span> <span>for</span> <span>a</span> <span>in</span> <span>cards</span><span>])</span><span>def</span> <span>is_straight</span><span>(</span><span>cv</span><span>):</span><span>diff</span> <span>=</span> <span>cv</span><span>[</span><span>-</span><span>1</span><span>]</span> <span>-</span> <span>cv</span><span>[</span><span>0</span><span>]</span><span>if</span> <span>diff</span> <span>==</span> <span>4</span><span>:</span><span>return</span> <span>True</span><span>elif</span> <span>diff</span> <span>==</span> <span>12</span><span>:</span><span>if</span> <span>cv</span><span>[</span><span>-</span><span>2</span><span>]</span> <span>-</span> <span>cv</span><span>[</span><span>0</span><span>]</span> <span>==</span> <span>3</span><span>:</span><span>return</span> <span>True</span><span>return</span> <span>False</span><span># We have our flushes in here. Any less suits and we don't care. </span> <span>if</span> <span>max_suit</span> <span>==</span> <span>5</span><span>:</span><span>if</span> <span>is_straight</span><span>(</span><span>card_nums</span><span>):</span><span>if</span> <span>card_nums</span><span>[</span><span>0</span><span>]</span> <span>==</span> <span>8</span><span>:</span> <span># ROYAL FLUSH!!! </span> <span>return</span> <span>"</span><span>Royal Flush</span><span>"</span><span>return</span> <span>"</span><span>Straight Flush</span><span>"</span><span>return</span> <span>"</span><span>Flush</span><span>"</span><span># Checking in on our same cards </span> <span># With a length of two we either have two pair or a full house </span> <span>elif</span> <span>len</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>2</span><span>:</span><span>if</span> <span>max</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>4</span><span>:</span> <span># Four of a Kind </span> <span>return</span> <span>"</span><span>Four of a Kind</span><span>"</span><span>elif</span> <span>max</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>3</span><span>:</span> <span># Full House </span> <span>return</span> <span>"</span><span>Full House</span><span>"</span><span>elif</span> <span>len</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>3</span><span>:</span><span>if</span> <span>max</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>3</span><span>:</span> <span># Three of a kind </span> <span>return</span> <span>"</span><span>Three of a Kind</span><span>"</span><span>else</span><span>:</span> <span># Two pair </span> <span>return</span> <span>"</span><span>Two Pair</span><span>"</span><span>elif</span> <span>len</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>4</span><span>:</span><span>return</span> <span>"</span><span>One Pair</span><span>"</span><span>else</span><span>:</span> <span># Garbage hand most likely. But maybe a straight! </span> <span>if</span> <span>is_straight</span><span>(</span><span>card_nums</span><span>):</span><span>return</span> <span>"</span><span>Straight</span><span>"</span><span>return</span> <span>"</span><span>High Card</span><span>"</span><span>if</span> <span>__name__</span> <span>==</span> <span>"</span><span>__main__</span><span>"</span><span>:</span><span>hands</span> <span>=</span> <span>[</span><span>"</span><span>TS JS QS KS AS</span><span>"</span><span>,</span> <span># Royal Flush </span> <span>"</span><span>AC 2C 3C 4C 5C</span><span>"</span><span>,</span> <span># Straight Flush </span> <span>"</span><span>AC AS 3C AD AH</span><span>"</span><span>,</span> <span># Four of a Kind </span> <span>"</span><span>TC 2C 2H TS TH</span><span>"</span><span>,</span> <span># Full House </span> <span>"</span><span>AH 5H TH 7H 4H</span><span>"</span><span>,</span> <span># Flush </span> <span>"</span><span>3D 4C 5H 6C 7D</span><span>"</span><span>,</span> <span># Straight </span> <span>"</span><span>3D 3C 3S 5H AD</span><span>"</span><span>,</span> <span># Three of a Kind </span> <span>"</span><span>3D 3C 5H 5S 7D</span><span>"</span><span>,</span> <span># Two Pair </span> <span>"</span><span>3D 3C 5H 8S 7D</span><span>"</span><span>,</span> <span># One Pair </span> <span>"</span><span>AC 3C 4H 7S 2D</span><span>"</span><span>]</span> <span># High Card Garbage </span><span>for</span> <span>hand</span> <span>in</span> <span>hands</span><span>:</span><span>print </span><span>(</span><span>"</span><span>With a hand of {}, Bob has a {}!</span><span>"</span><span>.</span><span>format</span><span>(</span><span>hand</span><span>,</span> <span>determine_hand</span><span>(</span><span>hand</span><span>)))</span><span>#!/usr/bin/python3 </span> <span>def</span> <span>determine_hand</span><span>(</span><span>hand</span><span>):</span> <span>card_value</span> <span>=</span> <span>dict</span><span>(</span><span>zip</span><span>(</span><span>'</span><span>2 3 4 5 6 7 8 9 T J Q K A</span><span>'</span><span>.</span><span>split</span><span>(),</span> <span>range</span><span>(</span><span>14</span><span>)))</span> <span>cards</span> <span>=</span> <span>[]</span> <span>suits</span> <span>=</span> <span>[]</span> <span>for</span> <span>card</span> <span>in</span> <span>hand</span><span>.</span><span>split</span><span>():</span> <span>c</span><span>,</span> <span>s</span> <span>=</span> <span>list</span><span>(</span><span>card</span><span>)</span> <span>cards</span><span>.</span><span>append</span><span>(</span><span>c</span><span>)</span> <span>suits</span><span>.</span><span>append</span><span>(</span><span>s</span><span>)</span> <span>max_suit</span> <span>=</span> <span>max</span><span>([</span><span>suits</span><span>.</span><span>count</span><span>(</span><span>a</span><span>)</span> <span>for</span> <span>a</span> <span>in</span> <span>suits</span><span>])</span> <span>same_cards</span> <span>=</span> <span>sorted</span><span>([</span><span>cards</span><span>.</span><span>count</span><span>(</span><span>a</span><span>)</span> <span>for</span> <span>a</span> <span>in</span> <span>set</span><span>(</span><span>cards</span><span>)])</span> <span>card_nums</span> <span>=</span> <span>sorted</span><span>([</span><span>card_value</span><span>[</span><span>a</span><span>]</span> <span>for</span> <span>a</span> <span>in</span> <span>cards</span><span>])</span> <span>def</span> <span>is_straight</span><span>(</span><span>cv</span><span>):</span> <span>diff</span> <span>=</span> <span>cv</span><span>[</span><span>-</span><span>1</span><span>]</span> <span>-</span> <span>cv</span><span>[</span><span>0</span><span>]</span> <span>if</span> <span>diff</span> <span>==</span> <span>4</span><span>:</span> <span>return</span> <span>True</span> <span>elif</span> <span>diff</span> <span>==</span> <span>12</span><span>:</span> <span>if</span> <span>cv</span><span>[</span><span>-</span><span>2</span><span>]</span> <span>-</span> <span>cv</span><span>[</span><span>0</span><span>]</span> <span>==</span> <span>3</span><span>:</span> <span>return</span> <span>True</span> <span>return</span> <span>False</span> <span># We have our flushes in here. Any less suits and we don't care. </span> <span>if</span> <span>max_suit</span> <span>==</span> <span>5</span><span>:</span> <span>if</span> <span>is_straight</span><span>(</span><span>card_nums</span><span>):</span> <span>if</span> <span>card_nums</span><span>[</span><span>0</span><span>]</span> <span>==</span> <span>8</span><span>:</span> <span># ROYAL FLUSH!!! </span> <span>return</span> <span>"</span><span>Royal Flush</span><span>"</span> <span>return</span> <span>"</span><span>Straight Flush</span><span>"</span> <span>return</span> <span>"</span><span>Flush</span><span>"</span> <span># Checking in on our same cards </span> <span># With a length of two we either have two pair or a full house </span> <span>elif</span> <span>len</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>2</span><span>:</span> <span>if</span> <span>max</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>4</span><span>:</span> <span># Four of a Kind </span> <span>return</span> <span>"</span><span>Four of a Kind</span><span>"</span> <span>elif</span> <span>max</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>3</span><span>:</span> <span># Full House </span> <span>return</span> <span>"</span><span>Full House</span><span>"</span> <span>elif</span> <span>len</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>3</span><span>:</span> <span>if</span> <span>max</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>3</span><span>:</span> <span># Three of a kind </span> <span>return</span> <span>"</span><span>Three of a Kind</span><span>"</span> <span>else</span><span>:</span> <span># Two pair </span> <span>return</span> <span>"</span><span>Two Pair</span><span>"</span> <span>elif</span> <span>len</span><span>(</span><span>same_cards</span><span>)</span> <span>==</span> <span>4</span><span>:</span> <span>return</span> <span>"</span><span>One Pair</span><span>"</span> <span>else</span><span>:</span> <span># Garbage hand most likely. But maybe a straight! </span> <span>if</span> <span>is_straight</span><span>(</span><span>card_nums</span><span>):</span> <span>return</span> <span>"</span><span>Straight</span><span>"</span> <span>return</span> <span>"</span><span>High Card</span><span>"</span> <span>if</span> <span>__name__</span> <span>==</span> <span>"</span><span>__main__</span><span>"</span><span>:</span> <span>hands</span> <span>=</span> <span>[</span><span>"</span><span>TS JS QS KS AS</span><span>"</span><span>,</span> <span># Royal Flush </span> <span>"</span><span>AC 2C 3C 4C 5C</span><span>"</span><span>,</span> <span># Straight Flush </span> <span>"</span><span>AC AS 3C AD AH</span><span>"</span><span>,</span> <span># Four of a Kind </span> <span>"</span><span>TC 2C 2H TS TH</span><span>"</span><span>,</span> <span># Full House </span> <span>"</span><span>AH 5H TH 7H 4H</span><span>"</span><span>,</span> <span># Flush </span> <span>"</span><span>3D 4C 5H 6C 7D</span><span>"</span><span>,</span> <span># Straight </span> <span>"</span><span>3D 3C 3S 5H AD</span><span>"</span><span>,</span> <span># Three of a Kind </span> <span>"</span><span>3D 3C 5H 5S 7D</span><span>"</span><span>,</span> <span># Two Pair </span> <span>"</span><span>3D 3C 5H 8S 7D</span><span>"</span><span>,</span> <span># One Pair </span> <span>"</span><span>AC 3C 4H 7S 2D</span><span>"</span><span>]</span> <span># High Card Garbage </span> <span>for</span> <span>hand</span> <span>in</span> <span>hands</span><span>:</span> <span>print </span><span>(</span><span>"</span><span>With a hand of {}, Bob has a {}!</span><span>"</span><span>.</span><span>format</span><span>(</span><span>hand</span><span>,</span> <span>determine_hand</span><span>(</span><span>hand</span><span>)))</span>#!/usr/bin/python3 def determine_hand(hand): card_value = dict(zip('2 3 4 5 6 7 8 9 T J Q K A'.split(), range(14))) cards = [] suits = [] for card in hand.split(): c, s = list(card) cards.append(c) suits.append(s) max_suit = max([suits.count(a) for a in suits]) same_cards = sorted([cards.count(a) for a in set(cards)]) card_nums = sorted([card_value[a] for a in cards]) def is_straight(cv): diff = cv[-1] - cv[0] if diff == 4: return True elif diff == 12: if cv[-2] - cv[0] == 3: return True return False # We have our flushes in here. Any less suits and we don't care. if max_suit == 5: if is_straight(card_nums): if card_nums[0] == 8: # ROYAL FLUSH!!! return "Royal Flush" return "Straight Flush" return "Flush" # Checking in on our same cards # With a length of two we either have two pair or a full house elif len(same_cards) == 2: if max(same_cards) == 4: # Four of a Kind return "Four of a Kind" elif max(same_cards) == 3: # Full House return "Full House" elif len(same_cards) == 3: if max(same_cards) == 3: # Three of a kind return "Three of a Kind" else: # Two pair return "Two Pair" elif len(same_cards) == 4: return "One Pair" else: # Garbage hand most likely. But maybe a straight! if is_straight(card_nums): return "Straight" return "High Card" if __name__ == "__main__": hands = ["TS JS QS KS AS", # Royal Flush "AC 2C 3C 4C 5C", # Straight Flush "AC AS 3C AD AH", # Four of a Kind "TC 2C 2H TS TH", # Full House "AH 5H TH 7H 4H", # Flush "3D 4C 5H 6C 7D", # Straight "3D 3C 3S 5H AD", # Three of a Kind "3D 3C 5H 5S 7D", # Two Pair "3D 3C 5H 8S 7D", # One Pair "AC 3C 4H 7S 2D"] # High Card Garbage for hand in hands: print ("With a hand of {}, Bob has a {}!".format(hand, determine_hand(hand)))
Enter fullscreen mode Exit fullscreen mode
100 Days of Code (48 Part Series)
1 Day 1: Two Sum
2 Day 2: Check Prime
… 44 more parts…
3 Day 3: Hex Colour
4 Day 4: Repeating Numbers
5 Day 5: Nearest Prime Numbers
6 Day 6: Anagram Detector
7 Day 7: Poker ID
8 Day 8: Bubble Sort
9 Day 9: Password Generator
10 Day 10: Array Search
11 Day 11: Rock, Paper, Scissors
12 Day 12: List Shuffle
13 Day 13: Validate ISBN
14 Day 14: HTML Markup Generator
15 Day 15: Pascal’s Triangle
16 Day 16: Pascal’s Pyramid
17 Day 17: d20 Dice Roller
18 Day 18: Base64
19 Day 19: Vigenère cipher
20 Day 20: Seven-segment display
21 Day 21: Insertion Sort
22 Day 22: Binary-Decimal
23 Day 23: Ducci sequence
24 Day 24: Shell Sort
25 Day 25: Calculator
26 Day 26: Merge Sort
27 Day 27: Bucket Sort
28 Day 28: Counting Sort
29 Day 29: Heap Sort
30 Day 30: Quick Sort
31 Day 31: Radix Sort
32 Day 32: Shaker Sort
33 Day 33: Stooge Sort
34 Day 34: Consuming a RESTful API with React
35 Day 35: Adding Machine
36 Day 36: React Form Validation
37 Day 37: Time Format Converter
38 Day 38: React Stopwatch
39 Day 39: Blackjack Checker
40 Day 40: Password Guessing Game
41 Day 41: String Case
42 Day 42: Tip Calculator
43 Day 43: Twitter Auto-reply
44 Day 44: React Currency Converter
45 Day 45: Phonebook
46 Day 46: Sudoku Generator
47 Day 47: Binary Search Tree
48 Day 48: AVL Tree
原文链接:Day 7: Poker ID
暂无评论内容