IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Combinaison de chiffre


Sujet :

Algorithmes et structures de données

  1. #1
    Membre régulier Avatar de Moine
    Inscrit en
    Mars 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 210
    Points : 90
    Points
    90
    Par défaut Combinaison de chiffre
    Bonjour tout le monde

    J'ai une casse tête en ce moment. Je suis confronté à un problème un peu mathématique. J'ai besoin d'une fonction qui me donne des combinaisons de chiffre. Exemple si je fournis à ma fonction 1-2-3-4-5 et je lui dit de me fournir toute les combinaisons de 3 chiffres qu'on peut faire à partir de ces nombres.Je m'attend à quelque chose de ce genre:
    1-2-3
    1-3-2
    1-3-4
    1-4-3
    1-4-5
    1-5-4
    1-2-4
    1-4-2
    1-2-5
    1-5-2

    2-3-4
    2-4-3
    etc.....

    Si quelqu'un peut me dire comment faire ça. Merci !
    Vive les bug!
    Ils font découvrir beaucoup de choses.

  2. #2
    Membre actif
    Inscrit en
    Mars 2008
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 209
    Points : 227
    Points
    227
    Par défaut
    le sujet a déjà été traité , regarde dans la section Contribuez

  3. #3
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Points : 1 913
    Points
    1 913
    Par défaut
    Une partie de ce programme répond à la question:
    (fonction partiesp)
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    # -*- coding: latin-1 -*-
    # La liste initiale des nombres que vous donnez en exemple
    ListeNombres=[1,2,3,4,5]
     
    # restitue la décomposition de n en système binaire sous forme de liste
    # exemple si n=32
    # la valeur retournée est [1,0,0,0,0]
    def binaire (n):
        L=[]
        while n:
            L.insert(0,n%2)
            n=n/2
        return L
     
    #même chose que précédemment mais avec normalisation sur p chiffres
    # en rajoutant au besoin des 0 devant
    # exemple si n=32 et p = 7
    # la valeur retournée est [0,0,1,0,0,0,0]
    def normalise (n, p):
        return [0]*(p-len(binaire(n)))+binaire(n)
     
    # fournit la liste des décompositions binaires
    # des nombres de 0 à n-1
    def enumbase2 (n):
        return [normalise(i,len(binaire(n))-1) for i in range(0,n)]
     
    # retourne la liste de toutes les parties de l'ensemble L (implémenté comme liste)
    def parties (L):
        k=1
        n=len(L)
        for i in range(0,n):# calcule le cardinal de l'ensemble des parties de n
            k=k*2
        FoncCar=enumbase2(k) # toutes les fonctions caractéristiques
        m=len(FoncCar)
        Parties=[]
        for i in range (0,m):
            F=FoncCar[i]
            P=[L[j] for j in range(0,len(F)) if F[j]!=0 ]
            Parties.append(P)
        return Parties
     
    # retourne la liste de toutes les parties à p éléments de L
    def partiesp (L,p):
        return [x for x in parties(L) if len(x)==p]
     
    # calcule la somme des éléments d'une liste
    def somme (L):
        def add(x,y): return x+y
        return reduce(add,L,0)
     
    # recherche les possibilités d'obtenir la somme k
    # avec p termes pris dans la liste donnée au début
    def recherche (p,k):
        L=partiesp(ListeNombres,p)
        Sol=[x for x in L if somme(x)==k]
        print Sol
     
    def main():
        # effectue la recherche que vous donnez en exemple
        recherche(3,10)
     
    if __name__ == '__main__':
        main()
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Salut.
    Si quelqu'un peut me dire comment faire ça. Merci !
    Tu peux voir sur wikipedia ! Il y a 60 possibilités.
    Le nombre d'arrangements sans répétition de n éléments pris k à k est égal à n!/(n-k)! si k≤n et à 0 sinon).

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Citation Envoyé par phryte Voir le message
    Salut.

    Tu peux voir sur wikipedia ! Il y a 60 possibilités.
    Le nombre d'arrangements sans répétition de n éléments pris k à k est égal à n!/(n-k)! si k≤n et à 0 sinon).
    Maple fait le calcul. Ou Matlab (qui utilise Maple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maple('with(combinat,permute):permute(5,3)')  [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 2], [1, 3, 4], [1, 3, 5], [1, 4, 2], [1, 4, 3], [1, 4, 5], [1, 5, 2], [1, 5, 3], [1, 5, 4],.....

  6. #6
    Membre régulier Avatar de Moine
    Inscrit en
    Mars 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 210
    Points : 90
    Points
    90
    Par défaut Combinaison de chiffre
    Merci à vous tous, c'est ce que je cherchais!
    Vive les bug!
    Ils font découvrir beaucoup de choses.

  7. #7
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Bonjour,

    d'un point de vu purement algorithmique, il faut que tu calcules toutes les combinaisons possible à l'aide d'un appel récursif.
    Dans ton cas, c'est quelques chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Fonction Permutation(int position)
    début
    Si position > 3 alors
         début
              Afficher le résultat.
              Retourner.
         fin
    pour i de 1 à 5 faire
         début
              Réponse[position] <- i
              Permutation(position+1)
         fin
    fin
    Ensuite, tu peux affiner pour ne jamais avoir deux fois les mêmes chiffres, donner une série de chiffre dans un tableau plutôt que les N premiers, ...
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. combinaison de chiffres ou lettres
    Par torjancss dans le forum Excel
    Réponses: 1
    Dernier message: 05/03/2014, 18h38
  2. Combinaisons à 6 chiffres possibles parmi 20 nombres
    Par djbebop dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 14/05/2011, 14h46
  3. algo pour afficher des combinaisons de chiffres
    Par m0ul3sh0t dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 29/10/2007, 22h37
  4. Combinaison a 3 chiffres
    Par niCo.nb dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 04/10/2006, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo