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 :

retouver toute les combinaison


Sujet :

Algorithmes et structures de données

  1. #1
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    751
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 751
    Points : 368
    Points
    368
    Par défaut retouver toute les combinaison
    J'ai une suite de 7 bits
    Je voudrais avoir la combinaison complete de cette suite
    Exp :
    1101100
    Combinaions :
    1101101
    1101111
    1101011
    ...
    Je pense que le nbr de résultat sera 7!
    '...parfois l'informatique peut vous rendre fou...'

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    D'après ce que je comprends, à chaque fois tu changes un bit du résultat précédent.

    La suite au complet serait donc:
    1101100
    _______
    1101101
    1101111
    1101011
    1100011
    1110011
    1010011
    0010011

    Pour cela, rien de plus simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    bit = 1 ;
     
    pour i de 1 à 7 faire
       valeur := valeur ^ bit ;
       écrire(valeur) ;
     
       bit := bit << 1 ;
    fpour
    Ici, les opérateurs utilisés sont ceux du C:
    a ^ b => a XOR b (XOR bit à bit)
    a << 1 => décalage de 1 bit vers la gauche (multiplication par 2 pour des entiers)
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Membre régulier Avatar de yoshï
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 206
    Points : 88
    Points
    88
    Par défaut
    J'ai une suite de 7 bits
    Je voudrais avoir la combinaison complete de cette suite
    Exp :
    1101100
    Combinaions :
    1101101
    1101111
    1101011
    ...
    Je pense que le nbr de résultat sera 7!
    bonjour,
    je ne comprends pas bien la question...
    S'agit il du nombre de combinaison (et donc de nombres représentables)
    à l'aide de 7bits := 2^7=128 combinaisons.

    ou bien s'agit il comme le dit pcaboche
    du nombre de combinaison en changeant à chaque fois un bit du résultat précédent.Auquel cas le nombre de combinaison est simplement égal à 7

    7!= nb de combinaison possible pour ordonner 7 entités
    exemple
    bit1 bit2 bit3 bit4 bit5 bit6 bit7
    bit2 bit1 bit3 bit4 bit5 bit6 bit7
    ....

  4. #4
    Membre confirmé
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Points : 554
    Points
    554
    Par défaut
    Pour plus d'info, tu peux regarder les codes de Gray.

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Encore faut-il savoir exactement ce qu'il cherche à faire et quel résultat il attend.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  6. #6
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    751
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 751
    Points : 368
    Points
    368
    Par défaut
    Citation Envoyé par yoshï
    J'ai une suite de 7 bits
    Je voudrais avoir la combinaison complete de cette suite
    Exp :
    1101100
    Combinaions :
    1101101
    1101111
    1101011
    ...
    Je pense que le nbr de résultat sera 7!
    bonjour,
    je ne comprends pas bien la question...
    S'agit il du nombre de combinaison (et donc de nombres représentables)
    à l'aide de 7bits := 2^7=128 combinaisons.

    ou bien s'agit il comme le dit pcaboche
    du nombre de combinaison en changeant à chaque fois un bit du résultat précédent.Auquel cas le nombre de combinaison est simplement égal à 7

    7!= nb de combinaison possible pour ordonner 7 entités
    exemple
    bit1 bit2 bit3 bit4 bit5 bit6 bit7
    bit2 bit1 bit3 bit4 bit5 bit6 bit7
    ....
    j'aurais du ne pas sécher mes cours de proba en effet je cherche le nombre de combinaison à l'aide de 7 bits !
    '...parfois l'informatique peut vous rendre fou...'

  7. #7
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par yoshï
    7! = nb de combinaison possible pour ordonner 7 entités
    exemple
    bit1 bit2 bit3 bit4 bit5 bit6 bit7
    bit2 bit1 bit3 bit4 bit5 bit6 bit7
    ....
    Pas forcément. Si on prend par exemple 1111111, quelle que soient les perfutations effectuées, on obtiendra toujours 1111111, donc on n'a qu'une seule solution.

    Faire la liste de toutes les permutations possibles à partir d'une liste de bits revient en fait à faire la liste de tous les entiers ayant la même parité que l'entier de départ.

    La parité, c'est le nombre de bits à '1' que compte l'entier.
    ex: parite(1101100) = 4

    Si l'ordre des combinaisons n'a pas d'importance, on peut procéder ainsi:

    1) On génère un nombre avec tous les 1 d'un coté et tous les 0 de l'autre. On y arrive facilement en faisant 2^(par+1)-1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    par := parite(nombre)
    valeur := (1<<(par+1))-1
    En principe, pour nombre=01101100, on obtient valeur=00001111

    2) On prend un bit dans les 0, un bit dans les 1 et on fait un XOR dessus (le 0 devient 1 et le 1 devient 0: c'est comme une permutation !)

    On devrait obtenir quelque chose du genre:
    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
    écrire(nombre) ;
     
    si (nombre <> 0) alors
      par := parite(nombre) ;
      valeur := (1<<(par+1))-1 ;
     
      pour i de par à 7 faire
        b :=  1<<i + 1 ;
     
        pour j de i à 7 faire
          valeur := valeur ^ b ;
          écrire(valeur)
          valeur := valeur ^ b ;
     
          b := b<<1 ;
        fpour
      fpour
    fsi
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  8. #8
    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
    bonsoir,

    essayons de donner une solution à la question du début !

    pour afficher toute les combinaison, une simple récursivitée suffit :
    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
     
    Solution[1..7] // Un tableau qui contiendra servira à afifcher la solution
     
    fonction(profondeur)
    debut
     
         Solution[Profondeur] = 0 ;
         si profondeur < 7 alors fonction(profondeur+1) ;
         sinon Afficher Solution
     
         Solution[Profondeur] = 1 ;
         si profondeur < 7 alors fonction(profondeur+1) ;
         sinon Afficher Solution
    fin
     
    Et on appelle avec fonction(1) ;
     
    Voilà pour ce qui est de la question d'origine.
     
    En revanche, en binaire pour lister toutes les possibilités de combinaison, il y a 2^7 combinaisons.
    [/quote]
    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.

  9. #9
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par ToTo13
    bonsoir,

    essayons de donner une solution à la question du début !

    pour afficher toute les combinaison, une simple récursivitée suffit :
    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
     
    Solution[1..7] // Un tableau qui contiendra servira à afifcher la solution
     
    fonction(profondeur)
    debut
     
         Solution[Profondeur] = 0 ;
         si profondeur < 7 alors fonction(profondeur+1) ;
         sinon Afficher Solution
     
         Solution[Profondeur] = 1 ;
         si profondeur < 7 alors fonction(profondeur+1) ;
         sinon Afficher Solution
    fin
     
    Et on appelle avec fonction(1) ;
     
    Voilà pour ce qui est de la question d'origine.
     
    En revanche, en binaire pour lister toutes les possibilités de combinaison, il y a 2^7 combinaisons.
    Plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pour i de 0 à 255
      afficher i
    fpour
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  10. #10
    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
    Bonsoir,

    petite modification à :
    pour i de 0 à 255
    afficher i
    fpour
    peut etre plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    pour i=0 à i<2^7 faire
      afficher( ConvertionBinaire(i) ) ;
    fpour
    C'est un peu plus générique et ca évitera d'avoir comme affichage :
    0 1 2 3 .... 255
    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.

Discussions similaires

  1. Réponses: 22
    Dernier message: 27/10/2006, 02h26
  2. Réponses: 16
    Dernier message: 20/10/2006, 16h31
  3. Avoir toutes les combinaison
    Par guigui76esi dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 18/10/2006, 17h53
  4. toutes les combinaisons possibles
    Par marocleverness dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 29/05/2006, 00h11
  5. Lister toutes les combinaisons...
    Par monstroplante dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 04/11/2005, 21h10

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