Aller au contenu

Index des sujets 2023

Corrigé sujet 24 - Année : 2023

Sujet 24 - 2023

Exercice 1

1
2
3
4
5
6
7
8
def nbr_occurrences(chaine):
    occ = {}
    for caractere in chaine:
        if caractere in occ:
            occ[caractere] += 1
        else:
            occ[caractere]=1
    return occ

Commentaire

Bon exercice pour revoir l'utilisation des dictionnaires.

Exercice 2

Bug

  • Le code présent sur le   pdf est buggé : on trouve lst2 comme paramètre mais L2 dans le corps de la fonction.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def fusion(lst1,lst2):
    n1 = len(lst1)
    n2 = len(lst2)
    lst12 = [0]*(n1+n2)
    i1 = 0
    i2 = 0
    i = 0
    while i1 < n1 and i2<n2 : #(1)
        if lst1[i1] < lst2[i2]:
            lst12[i] = lst1[i1] #(2)
            i1 = i1 + 1
        else:
            lst12[i] = lst2[i2]
            i2 = i2 + 1 
        i += 1
    while i1 < n1:
        lst12[i] = lst1[i1] #(3)
        i1 = i1 + 1
        i = i + 1
    while i2 < n2:
        lst12[i] = lst2[i2]
        i2 = i2 + 1
        i = i + 1
    return lst12
  1. i1 est l'indice de parcours de L1 (de longueur n1) i2 est l'indice de parcours de L2 (de longueur n2)
  2. On se trouve dans le cas où le plus petit élément se trouve dans L1, c'est donc lui qui est ajouté à liste fusionnée L12.
  3. On a atteint la fin de l'une des listes, il reste donc à ajouter les éléments restants de l'autre liste.

Attention

  • Le sujet est difficile, il faut d'abord comprendre l'algorithme utilisé (qui n'est pas expliqué)
  • Le même exercice figure en exercice 1 du sujet 7