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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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