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.
This commit is contained in:
Pat Wick 2024-02-04 20:54:44 -05:00
parent 19cd2472c8
commit 0f68ab5afd
1 changed files with 22 additions and 8 deletions

View File

@ -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)