On demande de calculer les
C(n,p), coefficients du binôme :
(a+b)n =
C(n,0)anb0
+ C(n,1)an-1b1
+...+ C(n,p)an-pbp
+...+ C(n,n-1)a1bn-1
+ C(n,n)a0bn
où
C(n,p) = n! / ( n!×(n-p)! ).
Ce qui donne par exemple :
(a+b)3 = a3 + 3a2b + 3ab2 + b3.
La relation de
Pascal nous dit que
C(n,p) = C(n-1,p) + C(n-1,p-1).
Ce qui permet de représenter les
C(n,p) ainsi :
|
p=0 |
p=1 |
p=2 |
p=3 |
p=4 |
p=5 |
p=6 |
p=7 |
p=8 |
n=0 | 1 |
n=1 | 1 | 1 |
n=2 | 1 | 2 | 1 |
n=3 | 1 | 3 | 3 | 1 |
n=4 | 1 | 4 | 6 | 4 | 1 |
n=5 | 1 | 5 | 10 | 10 | 5 | 1 |
n=6 | 1 | 6 | 15 | 20 | 15 | 6 | 1 |
n=7 | 1 | 7 | 21 | 35 | 35 | 21 | 7 | 1 |
n=8 | 1 | 8 | 28 | 56 | 70 | 56 | 28 | 8 | 1 |
La relation de
Pascal énonce que chaque case est la somme de celle immédiatement au-dessus et de celle au-dessus à gauche. Par exemple le
70 de la dernière ligne est la somme des deux
35 de la ligne du dessus. (Vous pouvez vérifier, ça marche partout !)
coeff(_,0,1).
coeff(P,P,1).
coeff(N,P,C) :- N>P, P>0, N>0, N1 is N-1, P1 is P-1,
coeff(N1,P1,C1), coeff(N1,P,C2),
C is C1+C2.