Skip to content
Extraits de code Groupes Projets
Valider 3fa064c3 rédigé par Adrien Payen's avatar Adrien Payen
Parcourir les fichiers

commit branche

parent 11500a5b
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Aucun aperçu pour ce type de fichier
......@@ -23,24 +23,78 @@ class TransitionMatrixCalculator:
return self.matrix_safe, self.matrix_normal, self.matrix_risky
def _compute_matrix(self, matrix, layout, dice, circle):
def _compute_matrix(self, matrix, layout, dice_type, circle):
matrices = {
"safe": self.matrix_safe,
"normal": self.matrix_normal,
"risky": self.matrix_risky
}
dice_types = {
"safe": "safe_dice",
"normal": "normal_dice",
"risky": "risky_dice"
}
dice_type_str = str(dice_types)
matrix = matrices[dice_type_str]
dice = getattr(self, dice_type_str)
for k in range(15):
for s, p in enumerate(dice):
if k == 9 and s == 1:
if k == 9 and s == 1 and dice_type == "safe":
k_prime = 14
matrix[k, k_prime] += p
elif k == 2 and s > 0:
elif k == 2 and s > 0 and dice_type != "risky":
p /= 2
k_prime = min(14, k + 1)
matrix[k, k_prime] += p
k_prime = min(14, k + 2)
matrix[k, k_prime] += p
k_prime = 10 if dice_type == "safe" else 3
else:
k_prime = min(14, k + s)
matrix[k, k_prime] += p
k_prime = k + s
if circle:
k_prime %= 15
else:
k_prime = min(14, k_prime)
if k == 2 and s > 0 and dice_type == "risky":
p /= 2
k_prime += (s - 1) if circle else 0
elif k == 9 and s in [1, 2] and dice_type != "safe":
if not circle or s == 1:
k_prime = 14
elif circle and s == 2:
k_prime = 0
elif k == 9 and s == 3 and dice_type == "risky":
if not circle or s == 1:
k_prime = 14
elif circle and s == 2:
k_prime = 0
elif circle and s == 3:
k_prime = 1 if layout[1] != 0 else 0
elif k == 8 and s == 2 and dice_type == "normal":
k_prime = 14
elif k == 7 and s == 3 and dice_type == "risky":
k_prime = 14
elif k == 8 and s in [2, 3] and dice_type == "risky":
if not circle or s == 2:
k_prime = 14
elif circle:
k_prime = 0
elif k == 8 and s in [2, 3] and dice_type == "normal":
if not circle or s == 2:
k_prime = 14
elif circle:
k_prime = 0
elif k == 9 and s in [1, 2, 3] and dice_type == "risky":
if not circle or s == 1:
k_prime = 14
elif circle and s == 2:
k_prime = 0
elif circle and s == 3:
k_prime = 1
if layout[1] != 0:
k_prime = max(0, k_prime - 3)
matrix[k, k_prime] += p
return matrix
def generate_arrays(self, n):
arrays = []
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter