Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Algo arrangements sans répétition

1 réponse
Avatar
platour
Bonjour, je recherche un algorithme (informatique) permettant de
fournir les arrangements possibles sans r=E9p=E9tition de n objets p =E0
p=2E

J'ai r=E9ussi =E0 mettre au point un algorithme math=E9matique r=E9cursif
qui est tr=E8s simple et tr=E8s =E9l=E9gant, mais sa programmation est par
contre (pour moi) compliqu=E9e. Ne r=E9ussissant pas =E0 mettre au point
le programme, je recherche donc s'il n'existe pas une routine "sur
=E9tag=E8re" en r=E9ponse =E0 ce probl=E8me.

Voici en d=E9tails le probl=E8me pos=E9 et mon attente pour sa r=E9solution
(pour rappel, les arrangements possibles sans r=E9p=E9tition des 4 objets
de l'ensemble E =3D [a, b, c, d] 3 =E0 3, est la collection d'objets
[(abc), (abd), (acd), (bcd)].

Mon attente porte sur un algorithme traitant en donn=E9e d'entr=E9e un
tableau d'indice entier 1 =E0 n, et g=E9n=E9rant en sortie une matrice
binaire donnant tous les arrangements d'indice possibles sans
r=E9p=E9tition p =E0 p, ceci quelque soit n et p (p>=3Dn). Cette matrice
=E9tant alors de taille n!/(n-p)!p! lignes (nombre d'arrangements) x p
colonnes.

Exemple avec n=3D 4, p=3D3, et T=3D[1, 2, 3, 4] (par analogie avec l'exemple
donn=E9 en rappel ci-dessus)
La matrice des arrangements est :
1er ligne =3D [1 1 1 0] correspondant =E0 l'arrangement (1,2,3)
2=E8me ligne =3D [1 1 0 1] correspondant =E0 l'arrangement (1,2,4)
3=E8me ligne =3D [1 0 1 1] correspondant =E0 l'arrangement (1,3,4)
4=E8me ligne =3D [0 1 1 1] correspondant =E0 l'arrangement (2,3,4)

L'objectif vis=E9 par ce programme est le tri (arrangements sans
r=E9p=E9tition) de donn=E9es contenues dans les cellules d'Excel, l'indice
=E9tant le num=E9ro de ligne de la cellule Une r=E9solution avec un
programme =E9crit en Visual Basic serait donc le bien venu.

Merci pour toute aide et assistance =E0 cette r=E9solution.

NB : Si une personne est int=E9ress=E9e par l'=E9quation math=E9matique
r=E9cursive que j'ai mise au point - pour la beaut=E9 de la chose - ou si
elle veut s'essayer =E0 la programmer, je n'ai pas d'inconv=E9nient =E0 la

communiquer.

1 réponse

Avatar
Modeste
Bonsour®
platour wrote:
Bonjour, je recherche un algorithme (informatique) permettant de
fournir les arrangements possibles sans répétition de n objets p à
p.


en adaptant ceci :
anagrame d'un mot se trouvant en A1 (reponse MPFE le 21 novembre)
une pseudo récursivité en utilisant la notion de pile :

Public pile() As Integer, partiel() As String
Sub anagramme()
On Error Resume Next
mot = [A1]
orig = mot
debut = ""
ligne = 1: colonne = 2
n = Len(mot)
ReDim pile(n), partiel(n)
etape1:
If Len(mot) = 1 Then GoTo etape2
debut = debut + Left(mot, 1)
p = p + 1
partiel(p) = mot
mot = Right(mot, Len(mot) - 1)
GoTo etape1
etape2:
ligne = ligne + 1
ecrire = debut & mot
If ligne > 30000 Then ligne = 1: colonne = colonne + 1
Cells(ligne + 1, colonne + 1).Value = ecrire
Application.StatusBar = colonne - 2 & "x30000 + " & ligne
i = 2
etape3:
mot = partiel(p)
p = p - 1
If Len(debut) = 1 Then GoTo etape4
debut = Left(debut, Len(debut) - 1)
GoTo etape5
etape4:
debut = ""
etape5:
pile(i) = pile(i) + 1
If pile(i) < i Then GoTo etape6
pile(i) = 0
i = i + 1
If i > n Then Exit Sub
GoTo etape3
etape6:
mot = Right(mot, Len(mot) - 1) + Left(mot, 1)
GoTo etape1
End Sub



--
les news pas à jour ?? ne passez plus par votre FAI, les news à la source
!!!
placez ce raccourci dans la ligne de commande
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr