Bonjour,
Je suggère une autre approche pour le fun:
Pour simuler le tirage des dés, on peut tirer toutes les combinaisons des 6 nombres (1,2,3,4,5,6) 2 à 2 en utilisant la fonction "combinations_with_replacement" du module itertools. A noter qu'on ne peut pas utiliser ici la fonction "combinations" puisqu'un premier dé avec un nombre n'exclut pas que le 2ème dé ait le même nombre.
On crée ensuite un dictionnaire avec pour clé la somme des 2 dés tirés, et pour valeur la liste des couples de dés qui donne cette somme.
1 2 3 4 5 6 7 8 9 10 11
| from itertools import combinations, combinations_with_replacement
L = []
R = {}
for elem in combinations_with_replacement([1,2,3,4,5,6], 2):
L.append(elem)
s = sum(elem)
if s in R:
R[s].append(elem)
else:
R[s] = [elem] |
Ce qui donne pour la liste L:
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 3), (3, 4), (3, 5), (3, 6), (4, 4), (4, 5), (4, 6), (5, 5), (5, 6), (6, 6)]
Et pour le dictionnaire R:
{2: [(1, 1)], 3: [(1, 2)], 4: [(1, 3), (2, 2)], 5: [(1, 4), (2, 3)], 6: [(1, 5), (2, 4), (3, 3)], 7: [(1, 6), (2, 5), (3, 4)], 8: [(2, 6), (3, 5), (4, 4)], 9: [(3, 6), (4, 5)], 10: [(4, 6), (5, 5)], 11: [(5, 6)], 12: [(6, 6)]}
On fait ce petit calcul au lancement du programme.
Ensuite, à chaque question, par exemple x=7, on obtient la réponse immédiate de toutes les possibilités d'obtenir cette somme: R[7] => [(1, 6), (2, 5), (3, 4)]
Partager