qi29.py

Created by schraf

Created on July 09, 2024

1.39 KB

Enoncé / Explications

Les différentes parties du programme

Définir les mots et leurs séries de chiffres correspondants : Nous avons une liste de mots associés à une série de chiffres.

Série à décoder : La série de chiffres pour laquelle nous devons trouver le mot.

Fonction possibles : Recherche des lettres possibles par chiffre : Pour chaque chiffre unique, nous trouvons les lettres possibles en intersectant les lettres des mots contenant ce chiffre.

Nettoyage des correspondances : Nous réduisons les correspondances en éliminant les lettres déjà assignées.

Décodage de la série : Nous utilisons les correspondances résolues pour décoder la série de chiffres.


# Definir mots et leurs series de chiffres 
mots = {
 'NUIT': [7, 5, 4, 3],
 'COUDE': [8, 7, 6, 2, 1],
 'TOUS': [9, 7, 5, 2],
 'NOCE': [8, 6, 3, 2],
 'DICTE': [8, 6, 5, 4, 1],
 'NOUES': [9, 7, 6, 3, 2]
}

# Serie a decoder
serie = [9, 6, 1, 7, 8, 5, 4, 2, 3]

def possibles(mots):
 # Obtenir tous les chiffres uniques de la liste
 chiffres = set(sum(list(mots.values()), []))
 corr = {}
 
 print("Recherche des lettres possibles par chiffre")
 # Pour chaque chiffre unique, trouver les lettres possibles
 for ch in chiffres:
  lettres = set()
  for mot, nums in mots.items():
   if ch in nums:
    if not lettres:
     lettres = set(mot)
    else:
     lettres = lettres.intersection(set(mot))
  corr[ch] = lettres
  print(ch, lettres)
 
 print("Nettoyage des correspondances")
 encore = True
 # Nettoyage des correspondances
 while encore:
  encore = False
  for ch, lettres in corr.items():
   if len(lettres) == 1:
    unique_lettre = next(iter(lettres))
    for autre_ch, autres_lettres in corr.items():
     if unique_lettre in autres_lettres and ch != autre_ch:
      corr[autre_ch].remove(unique_lettre)
      encore = True
 
 # Afficher les correspondances finales
 for ch, lettres in corr.items():
  print(ch, lettres)
 
 print("Decodage de la serie")
 # Decoder la serie
 mot_decode = ''.join(next(iter(corr[ch])) for ch in serie)
 print("Mot :", mot_decode)

# Appeler la fonction
possibles(mots)

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our <a href="https://www.numworks.com/legal/cookies-policy/">cookies policy</a>.