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

Framework .NET Discussion :

[VB.NET 2.0] Tester toutes les possibilites à partir de 5 chiffres


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut [VB.NET 2.0] Tester toutes les possibilites à partir de 5 chiffres
    Bonjour,

    Je souhaiterais savoir si il est possible de créer un programme qui teste toute les possibilités d'une cominaison à 5 chiffres.

    Bien sur il existe BruteForce qui le fais mais je n'ai pas envi de hacker quoique ce soit car c'est pas l'interet de ce code.

    De plus je connais les 5 chiffres dans le désordre : 1 2 3 4 5

    Peut ton tester tous les cas possibles pour trouver par exemple 5 3 1 4 2 ?

    Pour tout vous dire c'est dans le cadre d'un petit jeu d'enigme que je voudrais créer...

    Voila merci de votre aide !
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Salut,
    C'est bien sûr possible.
    Mais je ne vois pas vraiment la difficulté de la question, à savoir que cela demande une simple boucle (voire plusieurs boucles imbriquées, mais rien de bien complexe).

    Maintenant selon la longueur du nombre à trouver et le nombre de caractères disponibles cela risque de prendre un peu de temps, le mieux étant de définir des règles pour éliminer certains cas afin de diminuer le nombre de boucles.
    Mais dans ton cas c'est une simple permutation de 5 chiffres si j'ai bien compris. Donc, si je ne m'abuse, 5! == 120 possibilités. Ce qui n'est pas énorme.

    Mais il faudrait que tu précises sur quoi tu buttes : tu veux connaitre le code pour ne tester que les permutations de ces 5 chiffres, un code permettant d'interagir avec un autre logiciel, ... ? Ce n'est pas très clair...

  3. #3
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Salut, merci de ta reponse,

    Le but est de l'integrer dans un jeu d'enigme. En fait le mieux pour moi c'est de trouver un code qui va interagir avec le programme du jeu d'enigme mais cela me semble impossible (sauf peut etre avec des sockets). Dans le cas contraire, je vais inclure ce petit générateur dans le programme du jeu lui meme ainsi permettant au joueur de décrypter un code...

    Le code en lui meme est simple : Tester toutes les possibilités (si possible aléatoirement sans tester deux fois la meme possibilités) ou alors une à une de telle maniere à toruver un code que j'aurais prédéfinie avant.

    Pour le codage, bah je n'ai pas d'idée de comment commencer ma boucle... et oui y'a bien 5! possibilités...

    SI tu pouvais me dire par où commencer

    Merci :p
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 53
    Par défaut
    j'ai trouvé ca sur developpez.net avec en prime une initiation au declenchement asynchrone
    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
     
    Imports System.Threading
     
    Public Class Form1
     
    'Petite fonction bien connue des étudiants en informatique
    Function Factorielle(ByVal n As Integer) As Integer
    If n = 1 Then
    Return 1
    Else
    'Petite pause afin de pouvoir constater le résultat attendu
    Thread.Sleep(500)
    Return n * Factorielle(n - 1)
    End If
    End Function
     
    'Déclaration d'un délégué
    ' dont la signature doit être la même que la fonction appelée
    Delegate Function CalculFactorielle(ByVal n As Integer) As Integer
     
    'Instanciation de notre délégué avec l'adresse de notre fonction
    Dim FactorielleAsynchrone As CalculFactorielle
    FactorielleAsynchrone = New CalculFactorielle(AddressOf Factorielle)
     
    'IAsyncResult est un objet retourné par BeginInvoke
    ' pour récupérer le résultat de la fonction invoquée
    Dim Resultat As IAsyncResult
     
    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
    '
    Resultat = FactorielleAsynchrone.BeginInvoke(5, Nothing, Nothing)
     
    'A ce niveau, nous constatons que button1_click a repris la main.
    'Nous attendons que notre fonction termine son traitement.
    While Not Resultat.IsCompleted
    TextBox1.Text = "Traitement en cours"
    TextBox1.Refresh()
    End While
     
    'Notre Traitement terminé, nous affichons le résultat
    ' via la méthode EndInvoke
    TextBox1.Text = FactorielleAsynchrone.EndInvoke(Resultat)
    End Sub
    End Class

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    413
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 413
    Par défaut
    Pour ce qui est de l'interaction avec d'autre programmes, il existe la fonction SendKeys qui peut être utile.

    Pour ce qui est du code pour les permutations, ce serait un bon exercice d'algorithmique.
    Là je n'ai vraiment pas le temps de me pencher sur la question mais ça ne doit pas non plus être vraiment complexe à faire.
    Dans le pire des cas, tu génères toutes les possibilités de 12345 à 54321. Ca te fera trop de possibilités mais au moins l'algo est simple car c'est une simple boucle avec incrémentation du nombre de 1 à chaque fois.
    Maintenant il y a moyen de faire beaucoup mieux et je te conseille de chercher un peu, ne fusse que par satisfaction personnelle

  6. #6
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    je vois pas le rapport avec le probleme de ton code tophoune...

    sinon NicolasJolet oui c'est une possibilité mais je continu mes recherches

    par contre je vois pas comment un programme A peut interagir avec un programme B avec Sendkeys !

    merci
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  7. #7
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 77
    Par défaut
    Bonjour,
    pour ce qui est de la génération des nombres proprement dite, pourquoi ne pas passer par une chaine de caractères. Cela permet de n'explorer que les chiffres souhaités.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    int a, b, c, d, e, combinaison;
                string m;
     
                for(a = 0 ; a < 5 ; a++)
                    for(b = 0 ; b < 5 ; b++)
                        for(c = 0 ; c < 5 ; c++)
                            for(d = 0 ; d < 5 ; d++)
                                for (e = 0; e < 5; e++)
                                {
                                    m = string.Format("{0}{1}{2}{3}{4}", a, b, c, d, e);
                                    combinaison = int.Parse(m);
                                }

  8. #8
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Ou bien ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int result=0;
    for (int a = 10000 ; a <= 50000 ; a += 10000)
    	for (int b = 1000 ; b <= 5000 ; b += 1000)
    		for (int c = 100 ; c <= 500 ; c += 100)
    			for (int d = 10 ; d <= 50 ; d += 10)
    				for (int e = 1 ; e < 5 ; e += 5)
    					result = a + b + c + d + e;

Discussions similaires

  1. Réponses: 12
    Dernier message: 30/11/2013, 17h52
  2. Lister toutes les possibilités de casse d'une chaîne
    Par nerok dans le forum Windows Forms
    Réponses: 20
    Dernier message: 15/06/2007, 11h11
  3. Enumérer toutes les possibilités
    Par psyko72 dans le forum Prolog
    Réponses: 8
    Dernier message: 20/04/2007, 18h11
  4. [VB] Calcul de toute les possibilité
    Par Stan Trinity dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/11/2005, 15h31
  5. [VB.NET] Datagrid + CheckBox : Cocher toutes les cases
    Par sirex007 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 24/05/2004, 15h33

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