Correction de l'épreuve 45
Sujet (PDF intégré)
Exercice 1
def correspond(mot, mot_a_trous):
if len(mot) != len(mot_a_trous):
return False
for i in range(len(mot)):
if mot[i] != mot_a_trous[i] and mot_a_trous[i] != '*':
return False
return True
Exercice 2
def est_cyclique(plan):
'''Prend en paramètre un dictionnaire `plan` correspondant à
un plan d'envoi de messages (ici entre les personnes A, B, C,
D, E, F).
Renvoie True si le plan d'envoi de messages est cyclique et
False sinon.'''
expediteur = 'A'
destinataire = plan[expediteur]
nb_destinaires = 1
while destinataire != expediteur:
destinataire = plan[destinataire]
nb_destinaires += 1
return nb_destinaires == len(plan)
#tests
print(est_cyclique({'A':'E', 'F':'A', 'C':'D', 'E':'B', 'B':'F', 'D':'C'}))
print(est_cyclique({'A':'E', 'F':'C', 'C':'D', 'E':'B', 'B':'F', 'D':'A'}))
print(est_cyclique({'A':'B', 'F':'C', 'C':'D', 'E':'A', 'B':'F', 'D':'E'}))
print(est_cyclique({'A':'B', 'F':'A', 'C':'D', 'E':'C', 'B':'F', 'D':'E'}))
L'exercice 2 est un peu plus compliqué que l'exercice 1, mais il est très intéressant. Il faut bien comprendre que le plan d'envoi de messages est cyclique si et seulement si on revient à l'expéditeur initial après avoir envoyé le message à tous les destinataires.
Précédent | Suivant