Analyse combinatoire
guillitte
4,159 views
Bonjour!
Voici un petit programme python d'analyse combinatoire. Il permet de calculer les arrangements et les combinaisons de k parmi n pour des valeurs dépassant les capacités d'une calculatrice.
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
def A(k, n):
"""Nombre d'arrangements sans répétition de k objets pris parmi n"""
x = 1
i = n-k+1
while i <= n:
x = x*i
i += 1
return x
def fact(n):
"""Nombre de permutation de n objets"""
return A(n,n)
def C(k, n):
"""Nombre de combinaisons sans répétition de k objets pris parmi n"""
if k > n//2:
k = n-k
x = 1
y = 1
i = n-k+1
while i <= n:
x = (x*i)//y
y += 1
i += 1
return x
def gamma(k, n):
"""Nombre de combinaisons avec répétitions de k objets pris parmi n"""
return C(k, n+k-1)
def listA(k, S):
"""Liste les arrangements sans répétition de k lettres prises parmi les lettres de S"""
x = []
if k == 1:
for c in S:
x.append(c)
return x
l = len(S)
for i in range(l):
xi = S[i]
Si = S[:i]+S[i+1:]
#print(Si)
Ai = listA(k-1, Si)
#print(Ci)
for ai in Ai:
x.append(xi+ai)
return x
def listC(k, S):
"""Liste les combinaisons sans répétition de k lettres prises parmi les lettres de S"""
x = []
Exercice
Ajouter une instruction en fin de programme pour calculer le nombre de combinaisons de 19 parmi 67
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.