from random import random # Liste des mots et le mot cible mots = ['NUIT', 'COUDE', 'TOUS', 'NOCE', 'DICTE', 'NOUES'] mot_cible = 'SEDUCTION' def afficher_grille(mots, mot_cible): # Ensemble des lettres utilisees dans les mots et dans le mot cible lettres_mots = set(''.join(mots)) lettres_cible = set(mot_cible) # Verifier si toutes les lettres du mot cible sont presentes dans les mots if lettres_cible.issubset(lettres_mots): # Generer une liste de nombres unique en ordre decroissant nombres = list(range(len(lettres_mots), 0, -1)) # Melanger aleatoirement les nombres nombres_melanges = sorted(nombres, key=lambda _: random()) # Associer chaque lettre unique à un nombre unique association = dict(zip(list(lettres_mots), nombres_melanges)) # Afficher les en-têtes des colonnes header = "MOTS :\t" + "\t".join(map(str, nombres)) print(header) # Pour chaque mot, construire la ligne avec des "x" sous les chiffres correspondants for mot in mots: # Obtenir les chiffres associes aux lettres du mot nums = [association[lettre] for lettre in set(mot)] ligne = [mot] for nombre in nombres: if nombre in nums: ligne.append("x") else: ligne.append(" ") # Afficher la ligne avec des tabulations print("\t".join(ligne)) # Afficher les chiffres correspondant aux lettres du mot cible nums_cible = [association[lettre] for lettre in mot_cible] print("\n" + "\t".join(map(str, nums_cible))) else: # Afficher les lettres du mot cible qui ne sont pas dans les mots lettres_manquantes = lettres_cible.difference(lettres_mots) print('Lettres incompatibles\n', lettres_manquantes) # Appeler la fonction pour afficher la grille afficher_grille(mots, mot_cible)