Aller au contenu

Index des sujets 2022

Corrigé sujet 30 - Année : 2022

Sujet 30 - 2022

Exercice 1

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
def fusion(tab1,tab2):
    i1,i2 = 0,0
    tab = []
    while i1<len(tab1) and i2<len(tab2):
        if tab1[i1]<tab2[i2]:
            tab.append(tab1[i1])
            i1 += 1
        else:
            tab.append(tab2[i2])
            i2 += 1
    tab = tab + tab1[i1:] + tab2[i2:]
    return tab

Commentaire

Même si le tri fusion est au programme de terminale, l'exercice est sans doute difficile. On rappelle que pour fusionner deux listes déjà triées, on peut :

  • parcourir les deux listes en comparant leurs éléments, le plus petit est placé dans la liste fusion et on progresse dans le parcours de la liste correspondante
  • lorsque la fin d'une deux listes est atteinte on complète avec les éléments de l'autre.

Exercice 2

Bug

Il y a des différences notables (indentation, lignes, ....) entre le code python qui figure sur le sujet au format pdf et le code python fourni avec le sujet sous forme d'un fichier .py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
def rom_to_dec (nombre):

    """ Renvoie l’écriture décimale du nombre donné en chiffres romains """

    dico = {"I":1, "V":5, "X":10, "L":50, "C":100, "D":500, "M":1000} #(1)
    if len(nombre) == 1:
        return dico[nombre] #(2)

    else:
        ### on supprime le premier caractère de la chaîne contenue dans la variable nombre
         ### et cette nouvelle chaîne est enregistrée dans la variable nombre_droite
        nombre_droite = nombre[1:]


        if dico[nombre[0]] >= dico[nombre[1]]:
            return dico[nombre[0]] + rom_to_dec(nombre_droite) #(3)
        else:
            return rom_to_dec(nombre_droite)-dico[nombre[0]] #(4)
  1. On complète avec les valeurs des chiffres romains (données dans l'énoncé).
  2. Si le nombre contient un unique chiffre, on renvoie sa valeur.
  3. Ici, il faut ajouter la valeur de la première lettre car elle est supérieure à la valeur de la lettre suivante.
  4. Ici, il faut soustraire car elle est inférieure à la valeur de la lettre suivante.

Attention

  • Le sujet utilise les slices (nombre_droite = nombre[1:]) qui ne sont pas au programme.