Corrigé exercice 1 NSI jour 1 métropole 2022

Partie A : Expressions correctement parenthésées

  1. Question piège : pour reconnaître les langages algébriques comme ceux de ce sujet, il faut un automate à pile alors que cette question (hors sujet du coup) portait sur une file...
  2. L'expression B finit par une pile non vide et l'expression C donne lieu à une erreur de pile vide avant la fin. La variable controleur représente la hauteur de la pile. On propose d'améliorer le script :
    def parenthesage_correct(expression):
        controleur = 0
        for parenthese in expression:
            if parenthese == '(':
                controleur += 1
            elif parenthese == ')':
                controleur -= 1
                if controleur < 0:
                    return False
            else:
                raise Exception("Syntax Error")
        return controleur==0
  3. Partie B : Texte correctement balisé

    <p> <em> </p> </em>
    étape
    pile
    1. <p> <em> </em> </p>
      étape
      pile
    2. Il faut qu'à chaque fois qu'on rencontre une balise fermante, son contenu corresponde au sommet de la pile, et qu'à la fin (mais pas avant) la pile soit vide.
  4. On fait l'hypothèse que 6 de ces balises sont ouvrantes et les 6 autres, fermantes. Alors la hauteur maximum de la pile est 6 (cas où chaque balise est à l'intérieur de la précédente).