Bonjour à tous,
Je vous sollicite car j'essaie éperdument de faire marcher un algorithme qui me permettrait d'avoir toutes les permutations et de les insérés dans une liste.
En clair en terme de pseudo code mon algorithme consiste à faire cela :
Le pseudo-code est simplement : (J'essaye d'implémenter l'algorithme de permutation de Heap)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 fin=[1,2,3] resultat=[] def echanger(liste, i, j): liste[i], liste[j] = liste[j], liste[i] #VERSION RECURSIVE QUI BEUG encore def Permut(liste, n): if n==1 : return liste else : for i in range (1,n): Permut(liste,n-1) if n%2==0 : echanger(liste,i,n-1) resultat.append(list(liste)) else: echanger(liste, 0,n-1) resultat.append(list(liste))
En clair j'ai essayé de le faire avec des listes en variables globales mais par exemple quand je tape : Permut(fin,3) avec 3 pour donner la taille de la liste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Permutation (Entier : n, Liste A): Si n = 1 alors Retourner la liste Agorithme Sinon Pour i allant de 0 à n-1 Permuter(n-1,A) Si n est pair alors :Permut(fin,3) resultat => [[1, 2, 3], [3, 2, 1], [3, 2, 1], [1, 2, 3]] echanger(A[i],A[n-1]) Sinon echanger(A[0],A[n-1]) Fin Si Fin For Permuter(n-1,A); Fin Si
SI vous avez une solution, ou plutôt une piste ça serait vraiment cool ! Merci d'avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Permut(fin,3) resultat => [[1, 2, 3], [3, 2, 1], [3, 2, 1], [1, 2, 3]]
Partager