Sujet n°10
Sujet original
Pour télécharger l'énoncé original, cliquer ici.
Exercice n°1☘
Écrire la fonction maxliste
, prenant en paramètre un tableau non vide de
nombres tab
(de type list
) et renvoyant le plus grand élément de ce tableau.
Exemples
>>> maxliste([98, 12, 104, 23, 131, 9])
131
>>> maxliste([-27, 24, -3, 15])
24
Une solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
Exercice n°2☘
On dispose de chaînes de caractères contenant uniquement des parenthèses ouvrantes et fermantes.
Un parenthésage est correct si :
- le nombre de parenthèses ouvrantes de la chaîne est égal au nombre de parenthèses fermantes.
- en parcourant la chaîne de gauche à droite, le nombre de parenthèses déjà ouvertes doit être, à tout moment, supérieur ou égal au nombre de parenthèses déjà fermées.
Ainsi, "((()())(()))" est un parenthésage correct.
Les parenthésages "())(()" et "(())(()" sont, eux, incorrects.
On dispose du code de la classe Pile
suivant :
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 |
|
On souhaite programmer une fonction parenthesage
qui prend en paramètre une
chaîne de caractères ch
formée de parenthèses et renvoie True
si la
chaîne ch
est bien parenthésée et False
sinon.
Cette fonction utilise une pile et suit le principe suivant :
en parcourant la chaîne de gauche à droite, si on trouve une parenthèse
ouvrante, on l’empile au sommet de la pile et si on trouve une parenthèse
fermante, on dépile (si possible !) la parenthèse ouvrante stockée au sommet
de la pile.
La chaîne est alors bien parenthésée si, à la fin du parcours, la pile est vide.
Elle est, par contre, mal parenthésée :
- si dans le parcours, on trouve une parenthèse fermante, alors que la pile est vide ;
- ou si, à la fin du parcours, la pile n’est pas vide.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Commentaires sur le code original
Pour télécharger l'original du fichier à compléter, cliquer ici.
Exemples
>>> parenthesage("((()())(()))")
True
>>> parenthesage("())(()")
False
>>> parenthesage("(())(()")
False
Une solution
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
|