from itertools import permutations
# Générer toutes les permutations
perms = [list(perm) for perm in permutations([1, 2, 3, 4, 5, 6])]
# Remplacer 1 par N, 2 et 3 par B, 4,5,6 par V
perms = [["N" if val == 1 else ("B" if val == 2 or val == 3 else "V") for val in perm] for perm in perms]
# Supprimer les doublons (passer par des ensembles qui rejettent les doublons)
perms = [list(perm) for perm in set(tuple(perm) for perm in perms)]
# Trier les permutations valides par ordre alphabétique
perms.sort(reverse=0)
# Afficher les permutations valides
print(f"\n\n Liste des permutations valides")
print(*(f" {count+1:>3} {perm}" for count, perm in enumerate(perms)), sep="\n")
# Cas où justin porte une casquette bleue le jeudi
print(f"\n\n Cas où Justin porte une casquette bleue le jeudi :")
print(" L M M J V S")
# Ajouter X après les cas B, sinon 0
count_x = 0
i = 1
for perm in perms:
s_out = f" {i:>3} " + str(perm)
if perm[3] == 'B':
count_x += 1
s_out += " X " + str(count_x)
print (s_out)
i += 1
print(" L M M J V S")
print(f"\n Cas où Justin porte une casquette bleue le jeudi : {count_x} sur tot = {len(perms)}\n")
# Cas où Justin porte une casquette verte 3 jours successifs
print(f"\n\n Cas où Justin porte une casquette verte 3 jours successifs :")
print(" L M M J V S")
i = 1
count_x = 0
for perm in perms:
s_out = f" {i:>3} " + str(perm) + " "
if 'VVV' in ''.join(perm):
count_x += 1
s_out += " X " + str(count_x)
print(s_out)
i += 1
print(" L M M J V S")
print(f"\n Nombre de cas où Justin porte une casquette verte 3 jours successifs : {count_x} sur tot = {len(perms)}\n")
# Cas où Justin porte une casquette noire avant une verte
print(f"\n\n Cas où Justin porte une casquette noire avant une verte :")
print(" L M M J V S")
i = 1
count_x = 0
for perm in perms:
s_out = f" {i:>3} " + str(perm) + " "
if perm.index("N") < perm.index("V"):
count_x += 1
s_out += str(count_x)
print(s_out)
i += 1
print(" L M M J V S")
print(f"\n Nombre de cas où Justin porte une casquette noire avant une verte : {count_x} sur tot = {len(perms)}\n")