Aller au contenu

Index des sujets 2022

Corrigé sujet 03 - Année : 2022

Sujet 03 - 2022

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

Bug

Le code fourni semble contenir une erreur, en effet, pour le compléter on utilise un if True à la ligne 23 ! On devrait donc soit se passer de la ligne 23, soit réécrire cette 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
class Noeud:
    def __init__(self, g, v, d):
        self.gauche = g
        self.valeur = v
        self.droit = d

    def __str__(self):
        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) + ')'
    if True : #(4)
        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 !

Commentaire

Sujet assez difficile en plus d'être buggé et qui utilise diverses notions du programme (arbre, récursivité) et qui présente de plus un aspect mathématique.