From 0f68ab5afd507a71a1b83a7bc79beabf30f7baa3 Mon Sep 17 00:00:00 2001 From: Pat Wick Date: Sun, 4 Feb 2024 20:54:44 -0500 Subject: [PATCH] Modified dice_stats.py to fix a bug in 3+4 of kind Found an error where self.faces().sort() was syntacticly correct, at least I think it is, but wasn't actually generating my sorted list. Storing the faces returned list as a variable and then sorting the list stored in the variable did work reliably. --- dice_stats.py | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/dice_stats.py b/dice_stats.py index 3d5cc0d..22020af 100644 --- a/dice_stats.py +++ b/dice_stats.py @@ -19,22 +19,36 @@ class FiveDice: return False return True + def different_three_of_a_kind(self): + listOfFaceValues = self.faces() + maxCount = 0 + for value in listOfFaceValues: + count = listOfFaceValues.count(value) + if count >= maxCount: + maxCount = count + if maxCount >= 3: + return True + else: + return False + def is_three_of_a_kind(self): - self.faces().sort() - if self.faces()[0] == self.faces()[1] and self.faces()[0] == self.faces()[2] and self.faces()[0] != self.faces()[3]: + listOfFaces = self.faces() + listOfFaces.sort() + if listOfFaces[0] == listOfFaces[1] and listOfFaces[0] == listOfFaces[2]: return True - elif self.faces()[1] == self.faces()[2] and self.faces()[1] == self.faces()[3] and self.faces()[1] != self.faces()[4]: + elif listOfFaces[1] == listOfFaces[2] and listOfFaces[1] == listOfFaces[3]: return True - elif self.faces()[2] == self.faces()[3] and self.faces()[2] == self.faces()[4]: + elif listOfFaces[2] == listOfFaces[3] and listOfFaces[2] == listOfFaces[4]: return True else: return False def is_four_of_a_kind(self): - self.faces().sort() - if self.faces()[0] != self.faces()[4] and self.faces()[0] == self.faces()[1] and self.faces()[0] == self.faces()[2] and self.faces()[0] == self.faces()[3]: + listOfFaces = self.faces() + listOfFaces.sort() + if listOfFaces[0] == listOfFaces[1] and listOfFaces[0] == listOfFaces[2] and listOfFaces[0] == listOfFaces[3]: return True - elif self.faces()[0] != self.faces()[1] and self.faces()[1] == self.faces()[2] and self.faces()[1] == self.faces()[3] and self.faces()[1] == self.faces()[4]: + elif listOfFaces[1] == listOfFaces[2] and listOfFaces[1] == listOfFaces[3] and listOfFaces[1] == listOfFaces[4]: return True else: return False @@ -44,7 +58,7 @@ successes = 0 trials = 1000000 for trial in tqdm(range(trials)): dice.roll() - if dice.is_four_of_a_kind(): + if dice.is_three_of_a_kind(): successes += 1 print(successes/trials)