Triangle de Pascal - Sujet 16 - EP NSI 2025
Énoncé du problème
Exercice 1
Écrire une fonction moyenne(notes) qui renvoie la moyenne pondérée des résultats contenus dans le tableau notes, non vide, donné en paramètre. Ce tableau contient des couples (note, coefficient) dans lesquels :
noteest un nombre de type flottant (float) compris entre 0 et 20 ;coefficientest un nombre entier strictement positif.
Ainsi l’expression moyenne([(15.0,2),(9.0,1),(12.0,3)]) devra renvoyer 12.5 comme résultat du calcul suivant :
$$\frac{2 \times 15 + 1 \times 9 + 3 \times 12}{2 + 1 + 3} = 12,5$$
Exercice 2
On cherche à déterminer les valeurs du triangle de Pascal (Figure 1).
Dans le triangle de Pascal, chaque ligne commence et se termine par le nombre 1. Comme l’illustre la Figure 2, on additionne deux valeurs successives d’une ligne pour obtenir la valeur qui se situe sous la deuxième valeur.
[Figure 1 : triangle de Pascal — les six premières lignes du triangle affichées en escalier : 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1]
[Figure 2 : méthode de calcul — le même triangle, sur lequel des flèches montrent que la somme de deux valeurs voisines d’une ligne donne la valeur située sous la seconde d’entre elles : « 1 + 1 » de la deuxième ligne donne le 2 de la troisième ligne, « 3 + 3 » de la quatrième ligne donne le 6 de la cinquième ligne, et « 1 + 4 » de la cinquième ligne donne le 5 de la sixième ligne.]
Compléter les fonctions ligne_suivante et pascal ci-dessous. La fonction ligne_suivante prend en paramètre une liste d’entiers ligne correspondant à une ligne du triangle de Pascal et renvoie la liste correspondant à la ligne suivante du triangle de Pascal. La fonction pascal prend en paramètre un entier n et l’utilise pour construire le triangle de Pascal ayant n+1 lignes sous la forme d’une liste de listes.
def ligne_suivante(ligne):
'''Renvoie la ligne suivant ligne du triangle de Pascal'''
ligne_suiv = [...]
for i in range(...):
ligne_suiv.append(...)
ligne_suiv.append(...)
return ligne_suiv
def pascal(n):
'''Renvoie le triangle de Pascal de hauteur n'''
triangle = [ [1] ]
for k in range(...):
ligne_k = ...
triangle.append(ligne_k)
return triangle
Exemples :
>>> ligne_suivante([1, 3, 3, 1])
[1, 4, 6, 4, 1]
>>> pascal(2)
[[1], [1, 1], [1, 2, 1]]
>>> pascal(3)
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]]
Les contraintes ci-dessous sont ajoutées par la plateforme et ne font pas partie du sujet.
Exercice 1
Contraintes :
1 <= len(notes) <= 10^4- chaque élément de
notesest un couple(note, coefficient) noteest un flottant tel que0 <= note <= 20coefficientest un entier tel que1 <= coefficient <= 10^3notesest garanti non vide
Exercice 2
Contraintes :
0 <= n <= 100pascal(n)renvoie une liste den + 1listes ;pascal(0)renvoie[[1]]ligne_suivante(ligne)reçoit une liste non vide d’entiers correspondant à une ligne du triangle de Pascal, et renvoie une liste delen(ligne) + 1entiers- les valeurs du triangle sont des entiers Python (aucune borne machine)