3 nombres sur 9 dans tous les sens [Résolu]

Signaler
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
9 octobre 2006
-
 Vb Lover -
bonjour
sur une liste de 9 nombres il me les faut par 3  tous mais une seule fois

1,2,3,4,5,6,7,8,9

je dois obtenir (
dans un listdictionnary par exemple
)
123
124
125
126
129
...
234
245
...

mais bien sur pas 321 ni 524 car ils sont deja dans ma liste : 123 et 245

merci pour l'aide

42 réponses

Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

J'ai l'impreesion que depuis le début c'est un dialogue de sourds ce topic. En vb.net comme en vb6, l'algo pour obtenir cette liste de combinaison est pourtant simple et je l'ai donné plus haut. Le re-voilà adapté à ton code à part que je ne sais pas ce que tu veux faire avec ta variable i.

Dim neufa As New StringCollection
            For X As Integer = 1 To 9
                neufa.Add(X.ToString)
            Next
            Dim a, b, c As Integer

            Dim sb As New StringBuilder
            


Dim i As Integer = 0


            For a = 0 to 7
                For b = a + 1 to 8
                   For c = b + 1 to 9
                        sb.AppendFormat("{0} {1} {2}
", neufa(a), neufa(b), neufa(c))
                    Next
                Next
            Next

            Me.AddLiteral(i.ToString & "<hr />")
            Me.AddLiteral(sb.ToString)
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Mille excuses, une erreur de copier coller :

à la place de :

            For a = 0 to 7
                For b = a + 1 to 8
                   For c = b + 1 to 9

met :
            For a = 0 to 6
                For b = a + 1 to 7
                   For c = b + 1 to 8
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
une liste de 9 nombres ou 9 chiffres ?
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
9 octobre 2006

123
124
125
126
129
...
234
245
...


il faut les marier par 3 mais une seule fois


123 mais pas 213, 321, 231 ....
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
salut,
regarde dans les sources de loto

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
9 octobre 2006

merci mais je ne trouve pas ce que je  cherche
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
9 octobre 2006

je cherche juste une fonction simple pour me generer cette liste
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
peut-etre çà non ?







FOR



a=1
TO
9

 FOR
b=2
TO
9

  FOR
c=3 TO


9
   reult=
STR
(a)+
STR
(b)+
STR
(c)

  next a
 next b
next c

non, çà fait pas ?
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Salut anselmejour
Je t'ai mis un code exprès pour toi pour ton problème de 3 chiffres parmi 9
dis- moi si cela est ok pour toi

GRENIER Alain[8D]
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
9 octobre 2006

merci Vercomax je teste de suite

Alain ou as tu mis le code ?

merci a vous 2

j'etais sur un truc du genre :

 Private Sub TroisDeNeuf()
            Dim neufa As New StringCollection
            Dim neufb As New StringCollection
            Dim neufc As New StringCollection
            For a As Integer = 1 To 9
                neufa.Add(a.tostring)
            Next
            neufb = neufa
            neufc = neufa
            Dim sb As New StringBuilder
            Dim i As Integer = 0
            Dim _a, _b, _c As Integer
            For a As Integer = 0 To 8
                For b As Integer = 0 To 8
                    For c As Integer = 0 To 8
                        If a <> b AndAlso a <> c AndAlso b <> c Then
                            sb.AppendFormat("{0} {1} {2}
", neufa(a), neufa(b), neufa(c))
                            i += 1
                        End If
                    Next
                Next
                'ici il faudrait supprimer a chaque boucle le i=+1
            Next
            Me.AddLiteral(i.ToString & "<hr />")
            Me.AddLiteral(sb.ToString)
        End Sub
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
pose une listbox nommée Liste, et 2 boutons

voici ci-dessous le code de Galain (désolé mais si peu de code, j'ai désactivé la source)

Private Sub Command1_Click()
    chaine$ = "012"
    Do
        car1$ = Chr$(Asc(Left$(chaine$, 1) + 1))
        car2$ = Chr$(Asc(Mid$(chaine$, 2, 1) + 1))
        car3$ = Chr$(Asc(Right$(chaine$, 1) + 1))
        chaine$ = car1$ & car2$ & car3$
        If car1$ = "7" Then
            Liste.AddItem chaine$
            Exit Do
        End If
        temp$ = chaine$
        For i% = Val(Right$(chaine$, 1)) To 9
            chaine$ = Left$(chaine$, 2) & LTrim$(i%)
            Liste.AddItem chaine$
        Next i%
        chaine$ = temp$
    Loop
End Sub

Private Sub Command2_Click()
    Liste.Clear
End Sub

Private Sub Form_Load()
    Command1.Caption = "Lancer la
recherche"
    Command2.Caption = "Effacer la
liste"
    Liste.Clear
End Sub

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Pour anselmejour
Il faut attendre que le projet soit disponible dans les nouveaux codes
Cela se fait avec avec un petit temps de retard par rapport au dépot de la source

GRENIER Alain[8D]
Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Salut, je dirais plutôt :

Dim result As String
  For a = 1 To 7
   For b = a + 1 To 8
    For c = b + 1 To 9
     result = a & b & c
    Next a
   Next b
  Next c
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
9 octobre 2006

Vercomax dans ton code tu trouves 1 9 9 , 2 2 3
il ne faut pas de doublons
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
Pour PCPT
tu as bien fait de désactiver la source : c'est vrai que pour si peu cela n'en valait pas la peine
Le principal est que notre ami ait le bout de code
Merci et a+

GRENIER Alain[8D]
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
9 octobre 2006

Dolphin le resultat semble correct

il me faut juste maintenant l'adapter a un tableau, car bien sur ce ne sont pas  des chiffres de 1 a 9 mais 9 elements de tableau

merci bcp

Alain je n'ai pas trop idee  comment trouver la source de ton script , cest pas possible de la poster au plus simple cest a dire ici ?
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
je ne doutais pas de ta compréhension.

anselmejour -> si la réponse que j'ai copié précédemment te convient, pense à valider une des réponses de Galain.

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
BRAVO DOLPHIN !
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
anselmejour
-> tu aurais déjà eu ta réponses en lisant tous les posts...

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
28
Date d'inscription
lundi 24 octobre 2005
Statut
Membre
Dernière intervention
9 octobre 2006

merci pour lre code mais quel est ce langage ? en vbnet ca donne quoi ?





chaine
$ = "012"
    Do
        car1$ = Chr$(Asc(Left$(chaine$, 1) + 1))
        car2$ = Chr$(Asc(Mid$(chaine$, 2, 1) + 1))
        car3$ = Chr$(Asc(Right$(chaine$, 1) + 1))
        chaine$ = car1$ & car2$ & car3$
        If car1$ = "7" Then
            Liste.AddItem chaine$
            Exit Do
        End If
        temp$ = chaine$
        For i% = Val(Right$(chaine$, 1)) To 9
            chaine$ = Left$(chaine$, 2) & LTrim$(i%)
            Liste.AddItem chaine$
        Next i%
        chaine$ = temp$
    Loop
1 2 3