Aller au contenu

Index des sujets 2023

Corrigé sujet 21 - Année : 2023

Sujet 21 - 2023

Exercice 1

1
2
3
4
5
def delta(liste):
    codage=[liste[0]]
    for i in range(1,len(liste)):
        codage.append(liste[i]-liste[i-1])
    return codage

Commentaires

  • On construit le codage en partant du premier élément de la liste. Les autres éléments sont les différences entre deux éléments consécutifs de la liste de départ.
  • L'écriture de cette fonction peut aussi se faire (de façon plus concise) en utilisant les listes par compréhension :
        def delta(liste):
            return [liste[i]-liste[i-1] if i>0 else liste[i] for i in range(len(liste))]
    

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Noeud:
    '''
    classe implémentant un noeud d'arbre binaire
    '''

    def __init__(self, g, v, d):
        '''
        un objet Noeud possède 3 attributs :
        - gauche : le sous-arbre gauche,
        - valeur : la valeur de l'étiquette,
        - droit : le sous-arbre droit.
        '''
        self.gauche = g
        self.valeur = v
        self.droit = d

    def __str__(self):
        '''
        renvoie la représentation du noeud en chaine de caractères
        '''
        return str(self.valeur)

    def est_une_feuille(self):
        '''
        renvoie True si et seulement si le noeud est une feuille
        '''
        return self.gauche is None and self.droit is None


def expression_infixe(e):
    s = "" #(1)
    if e.gauche is not None: #(2)
        s = '(' + s + expression_infixe(e.gauche)
    s = s + str(e.valeur)
    if e.droit is not None: #(3)
        s = s + expression_infixe(e.droit) + ")"
    return s
  1. La variable s va contenir l'expression arithmétique
  2. Si le noeud contient un fils gauche, on construit l'expression associée et on ajoute la valeur du noeud à la suite.
  3. On construit la partie droite de l'expression (si elle existe)
  4. Si on atteint cette ligne, l'expression a été construite en totalité, il reste à la renvoyer. Il ne devrait pas y avoir de if !

Attention

Sujet difficile avec diverses notions du programme (arbre, récursivité) et qui présente de plus un aspect mathématique.