Aller au contenu

Index des sujets 2023

Corrigé sujet 38 - Année : 2023

Sujet 38 - 2023

Exercice 1

1
2
3
4
5
6
7
def correspond(mot,mot_a_trous):
    for indice in range(len(mot)):
        if indice >= len(mot_a_trous):
            return False
        if mot_a_trous[indice]!="*" and mot[indice]!=mot_a_trous[indice]:
            return False
    return True

Commentaire

  • On parcourt le mot et on vérifie que le mot à trous à une longueur suffisante pour comparer les caractères situés au même emplacement.
  • Si le caractère du mot à trous n'est pas *et qu'il est différent du caractère du mot, on renvoie False.
  • Le sujet ne précise pas si le caractère  * peut correspondre à un vide. Par exemple correspond('STOP','ST***') doit renvoyer True ou False ?

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
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: #(1)
        destinataire = plan[destinataire] #(2)
        nb_destinaires += 1
    return nb_destinaires == len(plan) #(3)
  1. On parcourt jusqu'à retomber sur l'expéditeur initial (A)
  2. Le nouveau destinataire est le destinataire de l'ancien destinataire)
  3. Si le nombre total de destinataire est égal à la longueur du dictionnaire alors c'est un cycle.