Avis aux matheux !! (combinaisons de lettres dans chaine)

Résolu
cs_philcam Messages postés 132 Date d'inscription dimanche 12 août 2001 Statut Membre Dernière intervention 17 octobre 2008 - 8 oct. 2004 à 15:00
loriental Messages postés 1 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 19 octobre 2004 - 19 oct. 2004 à 21:28
Salut à toute la communauté,

Depuis quelques jours je suis sur un problème qui va me mener au suicide, j'ai bricolé un bout de programme que je ne comprends même plus moi même mais qui me fait une partie du boulot, mais je pense qu'on peut faire mieux avec des formules.
Surtout que quelqu'un a dû le faire avant moi.

Voilà de quoi il s'agit :

Je veux par exemple savoir et afficher les combinaisons de 3 lettres dans une chaine.

Exemple :

combien de combinaison de 3 lettres dans la chaine ABCDE ?

réponses = 10 combinaisons

ABC
ABD
ABE
ACD
ACE
ADE
BCD
BCE
BDE
CDE

Exemple(2) :

combien de combinaison de 3 lettres dans la chaine ABCDEFGHIJKLMNOPQRST ? (20 lettres)

réponses = 1140 combinaisons

Non, non, je ne vais pas les coller ici, mais mon prog bricolo arrive à les calculer.

jusqu'à maintenant mon prog me suffisait mais aujourd'hui je voudrais qu'il calcule et affiche des combinaisons plus grandes, combien de fois 4 lettres, 5 lettres etc.. jusqu'à 7 on va dire, pour qu'à la fin je puisse calculer (et afficher) les combinaisons de 7 lettres dans 26 lettres.

voilà, avis aux courageux.

Merci d'avance.

26 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
8 oct. 2004 à 23:06
Je rajouterai aussi pour répondre à ton assertion : "si tu fais que des choses raisonnables dans ta vie tu dois pas t'éclater tout les jours" que ma vie privée ne te regarde pas et que moi je ne t'attaques pas sur ce plan. Donc tu restes correct et uniquement sur le plan de la prog.
Est ce que je t'ai dit qu'il fallait être con pour faire un machin pareil ?

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
cs_philcam Messages postés 132 Date d'inscription dimanche 12 août 2001 Statut Membre Dernière intervention 17 octobre 2008
9 oct. 2004 à 01:52
Bon si t'es suceptible on a pas fini car moi aussi 8-)

Premièrement : Tu dois savoir ce que c'est de patauger pour trouver une soluce pendant des jours ça ennerve, alors quand y'en a un qui vient dire est-ce bien raisonnable ça ennerve encore plus. ah ouais il a raison c'est pas raisonnable donc je laisse tout tomber.

Deuxièmement : j'avais tord qu'à moitié en disant qu'avec 7 ça devrait faire moins, car
avec 7 sur 26 ça fait 657 800 combinaisons
avec 18 sur 26 ça fait 1 562 275 combinaisons
avec 19 sur 26 ça fait 657 800 combinaisons (!)
avec 20 sur 26 ça fait 230 230 combinaisons, donc on retombe.

Troisièmement : Si c'est con de vouloir faire ce calcul, on est au moins deux puisqu'il y en a un qui la déjà fait. et même 3 si la soluce vient d'Archimède :-p

Qu'est ce que tu fais de la recherche fondamentale ?

Bon sans rancune, et oublie pas les smileys comme tu dis car s'était pas très flagrant comme humour.

J'oubliais la phrase "tu vas nous bourrer le forum", t'es webmaster de vbfrance ? c'est chez toi ici ? tu veux que je mette les résultat du calcul 13 sur 26 (10 400 600) ? t'as de la chance mon pc y'arrivera pas !

@+
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
9 oct. 2004 à 11:41
Salut,

Bon alors ici, c'est un forum et non un champ de bataille alors on échenge des connaissances et non des coup, voilà pour la parantèse.

Bon voici ce que MSDN me dit pour erreur 7 :

Mémoire insuffisante (erreur 7)

La mémoire disponible est insuffisante, ou une limite de segment de 64 Ko a été rencontrée. Causes et solutions de cette erreur : 

Un trop grand nombre d'applications, de documents ou de fichiers source sont ouverts.
Fermez les applications, documents ou fichiers source ouverts inutiles.

La taille d'unmodule ou d'uneprocédure est trop grande.
Fractionnez les grands modules ou les grandes procédures. Cette intervention ne permet pas d'économiser de la mémoire mais d'éviter les limites de segment de 64 Ko.

Vous exécutez Microsoft Windows en mode standard.
Relancez Microsoft Windows en mode étendu.

Vous exécutez Microsoft Windows en mode étendu, mais vous avez épuisé toute la mémoire virtuelle.
Pour augmenter la capacité de mémoire virtuelle, libérez de l'espace disque, ou vérifiez qu'un espace minimal est disponible.

Des programmes résidents sont chargés.
Retirez les programmes résidents.

Trop de pilotes de périphérique sont chargés.
Retirez les pilotes de périphérique inutiles.

Vous n'avez plus de place pour desvariables Public.
Réduisez le nombre de variables Public.


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
0
cs_philcam Messages postés 132 Date d'inscription dimanche 12 août 2001 Statut Membre Dernière intervention 17 octobre 2008
10 oct. 2004 à 02:00
Houla !! chapeau bas.

En fait j'avais retravaillé la source précédente pour passer par un fichier texte, car c'est plus vite calculé, une astuce aussi pour que ce genre de calcul soit plus rapide il faut cacher le control où l'affichage aura lieu pendant le calcul (ex: une listbox)

Là où tu marques un point c'est sur la longueur du code qui défie toute concurence.

Donc merci, et @+ sur le forum
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
10 oct. 2004 à 21:37
Option Explicit
Rem 3 CommandButtons et 3 Labels

Dim n     As Integer     'nombre de Lettres en tout
Dim nbre  As Long       'nombre de combinaison en tout
Dim mask  As Long      'poids du bit le plus fort
Dim T()   As Byte          'table des combinaisons
Dim Exist As Boolean   'pour existence fichier
Dim R     As Byte          'Longueur de la chaîne

Rem initialisation des variables
Private Sub Form_Load()    n 26: R 7
    nbre = 2 ^ n - 1
    mask = 2 ^ (n - 1)
    ReDim T(nbre)
End Sub

Rem Création du fichier des combinaisons
Private Sub Command1_Click()
    Dim nom   As String
    Dim cpt   As Byte
    Dim i     As Long
    Dim m     As Long
    For i = 0 To nbre        cpt 0: m mask        If (i Mod 100) 0 Then Label1 i: DoEvents
        While m > 0
           If i And m Then cpt = cpt + 1
           m = m \ 2
           Wend
        T(i) = cpt
        Next
    Label1 = i & " OK"
    nom = App.Path & "\fichierstat.bin"
    Open nom For Binary As #1
    Put #1, , T()
    Close #1
    Exist = True
End Sub

Rem Lecture du fichier des combinaisons
Private Sub Command2_Click()
    Dim nom   As String
    Dim Lg    As Long
    nom = App.Path & "\fichierstat.bin"
    If Dir(nom) = vbNullString Then
       Label2 = "Fichier absent"
       Exit Sub
       End If
    Open nom For Binary As #1
    Lg = LOF(1)
    ReDim T(Lg - 1)
    Get #1, , T()
    Close #1
    Label2 = Lg & " OK"
    Exist = True
End Sub

Rem Création du fichier contenant les chaînes
Private Sub Command3_Click()
    Dim nom   As String
    Dim s     As String
    Dim x     As Integer
    Dim i     As Long
    Dim m     As Long
    Dim cpt   As Long
    If Exist = False Then
       Label3 = "Fichier absent"
       Exit Sub
       End If
    nom = App.Path & "\Liste" & R & ".txt"
    Open nom For Output As #1
    For i = nbre To 0 Step -1
        If T(i) = R Then           s "": m mask
           For x = 1 To n
              If i And m Then s = s & Chr$(x + 64)
              m = m \ 2
              Next
           cpt = cpt + 1           If (cpt Mod 10) 0 Then Label3 cpt: DoEvents
           Print #1, s
           End If
        Next
    Close #1
    Label3 = cpt & " OK"
End Sub
0
loriental Messages postés 1 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 19 octobre 2004
19 oct. 2004 à 21:28
Loriental

Vous avez l'air de vous connaitre en combinaison de chiffres. Je ne veux pas vous relancer sur un autre problème mais quelqu'un aurait t il un code qui pourrait m'aider a calculer toutes les combinaisons de la grille du loto foot ? (7 equipes). Si c'est le cas loriental@mail.com ca serait vraiment gentil. Mes amitiés et bon courage pour vos prog. Bye
0
Rejoignez-nous