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 :

A partir de {a,b} construire tous les mot de longueur <= n


Sujet :

Algorithmes et structures de données

  1. #21
    Membre Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut
    Alors , je reviens aux mots de n-bits, j'esperais qu'on me contredirais quand j'ai ajouté "c":

    a partir d'un n-bits X=b1...bn, je construis 2 solutions d'un coup:

    - le mot écrit avec a et b en remplaçant 0 par a et 1 par b

    - le mot écrit à partir de X en otant les b1,b2...bi TOUS égaux à 0 puis en remplaçant 0 par a et 1 par b

    Itérer sur un binaire de longeur n, et trouver le bit de plus haut poids pour oter b1,...,bi, c'est mieux?


    ...


    Bien sûr, en parsant tous les n-bits, j'ai un doublon

  2. #22
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par Nemerle Voir le message
    Alors , je reviens aux mots de n-bits, j'esperais qu'on me contredirais quand j'ai ajouté "c":

    a partir d'un n-bits X=b1...bn, je construis 2 solutions d'un coup:

    - le mot écrit avec a et b en remplaçant 0 par a et 1 par b

    - le mot écrit à partir de X en otant les b1,b2...bi TOUS égaux à 0 puis en remplaçant 0 par a et 1 par b

    Itérer sur un binaire de longeur n, et trouver le bit de plus haut poids pour oter b1,...,bi, c'est mieux?


    ...


    Bien sûr, en parsant tous les n-bits, j'ai un doublon
    Et non, tu as encore des trucs qui manquent : tous les mots qui commencent par a et qui ont une longueur inférieure à n. Peut-être qu'en supprimant les b1,b2.. un par un tant qu'ils valent 0 ça marcherait ?

    --
    Jedaï

  3. #23
    Membre Expert Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Par défaut
    Citation Envoyé par Jedai Voir le message
    Et non, tu as encore des trucs qui manquent : tous les mots qui commencent par a et qui ont une longueur inférieure à n. Peut-être qu'en supprimant les b1,b2.. un par un tant qu'ils valent 0 ça marcherait ?
    --
    Jedaï
    oui Jedai, tu as raison, je m'a gourré!! Il faut ajouter une 3ième création:

    - le mot commençant par 0 écrit à partir de X en otant les b1,b2...bi TOUS égaux à 0 puis en remplaçant 0 par b et 1 par a

    Soit en fait une inversion "bit-à-bit" de la 2de condition...

    Ca semble précaire, mais je vais essayer de trouver le temps de rédiger le code...

    CAR quoi, il y a symétrie entre a et b, il faut l'utiliser...

  4. #24
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Tout ca pour ne pas ecrire 3 pauvres boucles...

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    String[] elements = new String[]{"a","b"};
    int n=3;
     
    for(int k=0;k<n;k++) {
    	for(int i=0;i<=(1<<(k+1))-1;i++) {
    		for(int j=0;j<=k;j++) {
    			System.out.print(elements[(i>>j)&1]);
    		}
    		System.out.print("\n");
    	}
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #25
    Membre éclairé Avatar de H-bil
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Par défaut
    Salut tous le monde et merci pour vos reponses
    voila ce que j'ai fai

    Code C : 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
     
    int puissance(int a, int b)
    {
        int i,c=1;
        for(i=1;i<=b;i++)
        c*=a;
        return c;
    }
     
    void ecrirEnBinaire(int a)
    {
        if(a==0)
        {
            printf("0");
        }
        else
        {      
            if(a==1)
            {
                printf("1");
            }
            else
            {
                ecrirEnBinaire(a/2);
                if(a%2==0)
                {
                    printf("0");
                }
                else
                {
                    printf("1");
                }
     
            }
        }
    }

    Code C : 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
     
    void ecrireMot(int n)
    {
        int j;
        for(j=0;j<puissance(2,n);j++)
        {
            ecrirEnBinaire(j);
            printf("\n");
        }
    }
     
    void ecrireTousLesMots(int n)
    {
        if(n==0)
        {
        return;
        }
        else
        {
            ecrireMot(n);
            ecrireTousLesMots(n-1);
        }
    }

    est ce que c'est une bonne methode ou non ?!

    pour la foction
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void ecrirEnBinaire(int a)
    elle doit etre modifiée, car pour le moment elle n'ecrit pas les zero à gauche ... elle donne par exemple 1 pour 001
    merci encor une fois

Discussions similaires

  1. Tous les mots clé SQL
    Par afrodje dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/04/2007, 20h24
  2. Réponses: 5
    Dernier message: 15/01/2007, 11h23
  3. Récupérer tous les mots d'une chaine de caractère
    Par steps5ive dans le forum Access
    Réponses: 2
    Dernier message: 05/09/2006, 15h14
  4. [RegEx] Trouver tous les "/mot" dans une chaîne
    Par micatmidog dans le forum Langage
    Réponses: 7
    Dernier message: 31/03/2006, 12h07
  5. suppression de tous les mots de moins de 3 caracteres
    Par HurtMarley dans le forum Langage
    Réponses: 3
    Dernier message: 14/02/2006, 01h20

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