Aller au contenu

Le triangle de Pascal⚓︎

On cherche à construire le triangle de Pascal.

Le triangle de Pascal

Dans ce tableau de forme triangulaire, chaque ligne commence et se termine par le nombre \(1\).

Par ailleurs, la valeur qui occupe une case située à l'intérieur du tableau s'obtient en ajoutant les valeurs des deux cases situées juste au-dessus et au-dessus à gauche, comme l'indique la figure suivante :

Colonnes : 0 1 2 3 4 5
ligne 0 : \(1\)
ligne 1 : \(1\) \(1\)
ligne 2 : \(1\) \(2\) \(1\)
ligne 3 : \(1\) \(3\) \(3\) \(1\)
ligne 4 : \(1\) \(4\) \(\mathbf{6}\) \(\mathbf{4}\) \(1\)
ligne 5 : \(1\) \(5\) \(10\) \(\mathbf{10}\) \(5\) \(1\)

Le second \(10\) s'obtient avec \(6\) en haut à gauche, plus \(4\) juste au-dessus ; comme pour tous les nombres du tableau, sauf les \(1\) qui sont placés par définition.

Objectif : Écrire une fonction telle que pascal(n) renvoie la liste correspondant au triangle de Pascal de la ligne 0 à la ligne n. Il y a \((n+1)\) lignes.

Exemples

🐍 Console Python
>>> pascal(4)
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
>>> pascal(5)
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]

Compléter le code suivant :

###
# testsbksl-nlassert pascal(4) == [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]bksl-nlassert pascal(5) == [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1]]bksl-nlbksl-nl# autres testsbksl-nlbksl-nlassert pascal(0) == [[1]]bksl-nlassert pascal(1) == [[1], [1, 1]]bksl-nlassert pascal(10) == [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1], [1, 7, 21, 35, 35, 21, 7, 1], [1, 8, 28, 56, 70, 56, 28, 8, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1], [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]]bksl-nlbksl-nl 5/5

def pascal(n):bksl-nl triangle = [[1]]bksl-nl for k in range(1, ...):bksl-nl lignepy-undk = [...]bksl-nl for i in range(1, k):bksl-nl lignepy-undk.append(triangle[...][i - 1] + triangle[...][...])bksl-nl lignepy-undk.append(...)bksl-nl triangle.append(lignepy-undk)bksl-nl return trianglebksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert pascal(4) == [bksl-nl [1],bksl-nl [1, 1],bksl-nl [1, 2, 1],bksl-nl [1, 3, 3, 1],bksl-nl [1, 4, 6, 4, 1],bksl-nl]bksl-nlbksl-nlbksl-nlassert pascal(5) == [bksl-nl [1],bksl-nl [1, 1],bksl-nl [1, 2, 1],bksl-nl [1, 3, 3, 1],bksl-nl [1, 4, 6, 4, 1],bksl-nl [1, 5, 10, 10, 5, 1],bksl-nl]bksl-nlbksl-nldef pascal(n):bksl-nl triangle = [[1]]bksl-nl for k in range(1, n + 1):bksl-nl lignepy-undk = [1]bksl-nl for i in range(1, k):bksl-nl lignepy-undk.append(triangle[k - 1][i - 1] + triangle[k - 1][i])bksl-nl lignepy-undk.append(1)bksl-nl triangle.append(lignepy-undk)bksl-nl return trianglebksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert pascal(4) == [bksl-nl [1],bksl-nl [1, 1],bksl-nl [1, 2, 1],bksl-nl [1, 3, 3, 1],bksl-nl [1, 4, 6, 4, 1],bksl-nl]bksl-nlbksl-nlbksl-nlassert pascal(5) == [bksl-nl [1],bksl-nl [1, 1],bksl-nl [1, 2, 1],bksl-nl [1, 3, 3, 1],bksl-nl [1, 4, 6, 4, 1],bksl-nl [1, 5, 10, 10, 5, 1],bksl-nl]bksl-nlbksl-nl

A

On travaille par accumulation de lignes à partir de la liste [[1]] qui contient la ligne 0 qui ne contient qu'un élément.

On fait faire \(n\) tours de boucles pour ajouter les lignes \(1\) incluse à \(n+1\) exclue.

Pour chaque ligne, le premier, comme le dernier terme sont ajoutés individuellement ; il s'agit de \(1\).

Les autres termes sont calculés en suivant la formule donnée. Il faut faire attention aux indices.

  • On calcule la ligne \(k\), on utilise donc les coefficients de la ligne \(k-1\). Ceux aux indices \(i-1\) et \(i\) ; au premier tour de boucle interne \(i=1\), et on ajoute bien les termes d'indice 0 et 1.

Utilisations du triangle de Pascal⚓︎

Le triangle de Pascal donne les coefficients binomiaux qui sont très utilisés en combinatoire.

La formule du binôme est

\[(a+b)^n = \sum_{i=0}^{n}\binom{n}{i}a^{n-i}b^i\]

La ligne d'indice 3 du triangle est [1, 3, 3, 1], ce qui donne par exemple

\[(a+b)^3 = a^3 + 3a^2b + 3ab^2 + b^3\]

Histoire⚓︎

En mathématiques, le triangle de Pascal est une présentation des coefficients binomiaux dans un triangle. Il fut nommé ainsi en l'honneur du mathématicien français Blaise Pascal. Il est connu sous l'appellation « triangle de Pascal » en Occident, bien qu'il ait été étudié par d'autres mathématiciens, parfois plusieurs siècles avant lui, en Inde, en Perse (où il est appelé « triangle de Khayyam »), au Maghreb, en Chine (où il est appelé « triangle de Yang Hui »), en Allemagne et en Italie (où il est appelé « triangle de Tartaglia »).

Source : Wikipédia, Le triangle de Pascal

Z