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 :

Code leet speak pour génération de mot de passe


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    analyste pgrogrammeur
    Inscrit en
    février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : analyste pgrogrammeur
    Secteur : Finance

    Informations forums :
    Inscription : février 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Code leet speak pour génération de mot de passe
    Bonjour a tous,
    J'essaie de coder un générateur de mot de passe par permutation, je bute actuellement sur cette fonction
    En entrée j'ai : "abcd"
    J'ai une table de conversion avec un Switch ( a->1, b->2, c->3, d->4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    char swich(char permut)
    {
    	if(permut == 'a')
    		return '1';
    	if(permut == 'b')
    		return '2';
    	if(permut == 'c')
    		return '3';
    	if(permut == 'd')
    		return '4';
    	if(permut == 'e')
    		return '5';
    }
    le résultat attendu m'afficherai :
    abcd
    abc4
    ab3d
    ab34
    a2cd
    a2c4
    a23d
    a234...

    voici un bout de code sur lequel je suis...
    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
     
    char mot[4] = "abcd";
    	int cpt = 1;
    	char *ptr = mot + 3;
    	while(1) 
    	{
    	  printf("%s\n",mot);
    	  char *ptr2 = ptr;
     
    	  while (*ptr2 == swich(*ptr2)) 
    		  {
    		    if (ptr2 == mot) goto fin;
    		    *ptr2 = mot[4];
    		    *ptr2-- = mot[4-cpt];
    		    cpt++;
    		  }    
    	  (*ptr2)= swich(*ptr2);
    	}
    	fin:;

    Auriez vous un algo (recursif ou non) permettant cette permutation?
    Cordialement,

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    février 2013
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : février 2013
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    Si tu peux transcrire dans ton langage, voici un code Basic qui fonctionne
    call orderperm s$ : appel de la fonction orderperm avec s$ en argument
    mid$(r$, i, 1) est le caractère unique (1) de rang i dans r$)
    Code vb : 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
    s$="abcde"
    global ls, index
    ls = len(s$) : index = 0
    dim c$(ls)
    t0 = time$("ms")   'mod
    call orderperm s$
    t1=time$("ms")     'mod
    print "Time taken ";t1-t0   'mod
    sub orderperm r$
        scan
        if len(r$) = 0 then
            index = index + 1
            print index;": ";
            for i = 1 to ls
                print c$(i);
            next
            print
        else
            lr = len(r$)
            for i = 1 to lr
                c$(ls - lr + 1) = mid$(r$, i, 1)
                r1$ = mid$(r$, 1, i - 1) + mid$(r$, i + 1)
                call orderperm r1$
            next
        end if
    end sub
    Savoir pour comprendre et vice versa.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    analyste pgrogrammeur
    Inscrit en
    février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : analyste pgrogrammeur
    Secteur : Finance

    Informations forums :
    Inscription : février 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    merci ,je me penche dessus demain, je te tiens au jus

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    février 2013
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : février 2013
    Messages : 225
    Points : 180
    Points
    180
    Par défaut
    Citation Envoyé par Cortofer Voir le message
    merci ,je me penche dessus demain, je te tiens au jus
    r$ est une chaine
    C$() est un tableau de chaines
    len(r$): longueur de r$
    scan: lecture des périphériques pour arrêt en cours de traitement
    time: renvoi du temps de traitement
    gobal: portée des variables
    print: renvoi des résultats en console
    Savoir pour comprendre et vice versa.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    analyste pgrogrammeur
    Inscrit en
    février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : analyste pgrogrammeur
    Secteur : Finance

    Informations forums :
    Inscription : février 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bon, j'ai trouvé la soluce en nageant hier...

    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
     
            int n = 5;
    	int i,j,exp_tmp =0, mod_tmp = 0;	
    	char tab[n];
    	strcpy(tab,"abcde");
    	int nb_passage = exp2(n);
    	for (i = 1 ; i <= nb_passage; i++)
    	{
    			printf("\n%s :",tab);
    		for (j = 0 ; j < n; j++)
    		{
    			exp_tmp = exp2(j);
    			mod_tmp = i % exp_tmp;
    			if (mod_tmp == 0)
    			{
    				tab[n-1-j] = swich(tab[n-1-j]);
    				//printf("Tab[%d] ",(n-j));
    			}
     
    		}
    	}

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    analyste pgrogrammeur
    Inscrit en
    février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : analyste pgrogrammeur
    Secteur : Finance

    Informations forums :
    Inscription : février 2020
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    L'idée c'est de boucler sur 2 puissance n (4 lettre ->16..)
    La boucle interne permet de parcourir chaque caractère
    a l'interieur on utlise le modulo pour gérer le moment on chaque caractère doit permutter
    Donc le premier caractère (2 puissance 0) change a chaque fois
    le deuxième caractère( 2 puissance1) change tout les deux

    Si on applique le modulo sur le résultat, si il tomba a 0 alors on permutte!!!

    Merci a vous

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/05/2011, 12h39
  2. code d'un bouton pour contrôle de mot de passe
    Par narr255 dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/10/2010, 15h22
  3. [AC-2003] Création d'un code pour ajouter un mot de passe sur le bon identifiant.
    Par Chagui dans le forum VBA Access
    Réponses: 6
    Dernier message: 21/10/2010, 20h30
  4. Réponses: 1
    Dernier message: 13/02/2006, 14h14
  5. [conseil] script de génération de mots de passe
    Par spilliaert dans le forum Langage
    Réponses: 11
    Dernier message: 07/02/2006, 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