Advertisement
Guest User

Problem 54

a guest
Nov 1st, 2014
290
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. from collections import Counter
  2.  
  3. class parsepoker():
  4.  
  5. def __init__(self, input, player = 1):
  6. input = input.replace("T", "10")
  7. input = input.replace("J", "11")
  8. input = input.replace("Q", "12")
  9. input = input.replace("K", "13")
  10. input = input.replace("A", "14")
  11.  
  12. if player == 1:
  13. self.hand = input.split()[:5]
  14. else:
  15. self.hand = input.split()[5:]
  16. self.suits = [x[1] for x in self.hand]
  17. self.ranks = [int(x[0:-1]) for x in self.hand]
  18. self.suitscount = dict(Counter(self.suits))
  19. self.rankscount = dict(Counter(self.ranks))
  20. self.tiebreaker = [(y, x) for (x, y) in Counter(self.ranks).items()]
  21.  
  22. def fourofakind(self):
  23. return 4 in self.rankscount.values()
  24.  
  25. def straight(self):
  26. if (max(self.ranks) - min(self.ranks)) == 4 and max(self.rankscount.values()) == 1:
  27. return True
  28. elif sorted(self.ranks) == [2, 3, 4, 5, 14]:
  29. return True
  30. else:
  31. return False
  32.  
  33. def threeofakind(self):
  34. return 3 in self.rankscount.values()
  35.  
  36. def flush(self):
  37. return 5 in self.suitscount.values()
  38.  
  39. def fullhouse(self):
  40. return 2 in self.rankscount.values() and 3 in self.rankscount.values()
  41.  
  42. def highcard(self):
  43. return max(self.ranks)
  44.  
  45. def twopair(self):
  46. return "22" in "".join(sorted(map(str, self.rankscount.values())))
  47.  
  48. def onepair(self):
  49. return 2 in self.rankscount.values()
  50.  
  51. def straightflush(self):
  52. return parsepoker.straight(self) and parsepoker.flush(self)
  53.  
  54. def royalflush(self):
  55. return parsepoker.flush(self) and min(self.ranks) == 10
  56.  
  57. def testhand(self):
  58. if parsepoker.royalflush(self): self.score = 10
  59. elif parsepoker.straightflush(self): self.score = 9
  60. elif parsepoker.fourofakind(self): self.score = 8
  61. elif parsepoker.fullhouse(self): self.score = 7
  62. elif parsepoker.flush(self): self.score = 6
  63. elif parsepoker.straight(self): self.score = 5
  64. elif parsepoker.threeofakind(self): self.score = 4
  65. elif parsepoker.twopair(self): self.score = 3
  66. elif parsepoker.onepair(self): self.score = 2
  67. else: self.score = 1
  68.  
  69. pokerfile = open("poker1.txt", "r")
  70. temp = pokerfile.read().splitlines()
  71. player1wins = 0
  72.  
  73. for pokerhand in temp:
  74. player1 = parsepoker(pokerhand, 1)
  75. player2 = parsepoker(pokerhand, 2)
  76. player1.testhand()
  77. player2.testhand()
  78. if player1.score > player2.score: player1wins += 1
  79. elif player1.score == player2.score and sorted(player1.tiebreaker, reverse=True) > sorted(player2.tiebreaker, reverse=True):
  80. player1wins += 1
  81. print player1wins
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement