Algorithme
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Algorithme



  1. #1
    totio94

    Algorithme


    ------

    Bonjour,
    J'explique mon " problème "

    Je cherche un logiciel capable de me fournir toute les combinaison possible d'un digicode qui va de 0 à B ( 0123456789AB ).
    de pouvoir mes les imprimer à 7 colonne par feuille A4. Donc naturelement si le premier chiffre de la première colone de la première feuille est 0000, et que le dernier est admettons 026B, le premier nombre de la première colone de la 2eme feuille sera 0270.

    Et si possible faire pareil mais en changeant les pramètre par exemple faire une combinaison de 3 ou 6 caractère ( toujours avec les caractère 0 à B ) ou changer le nombre de caractère toujours sur une combinaison à 3 4 ou 6 caractère, mais avec par exemple une fourchette de 0 à Z .

    Dispo pour toute questions

    J'ai un logiciel de compilations ( Dev c++ ) donc si il n'existe pas de tel logiciels, pourquoi pas le programmer ( je suis pas du tout fort en programmations, mais bon si le code est déjà fait c'est simple ).

    voilà merci

    -----

  2. #2
    whoami

    Re : Algorithme

    Bonjour,

    Dev C++ est obsolète (il n'est plus maintenu depuis plusieurs années), un remplaçant performant est Code:Blocks.

    Et ton problème ressemble tellement à un exercice de cours que c'est certainement le cas ...

  3. #3
    invite765732342432
    Invité

    Re : Algorithme

    Pour ce genre de chose, j'utilise un tableau (OpenOffice ou Excel)
    Ca demande quelques bricolages, mais c'est assez rapide (si le seul but est d'avoir une impression)

  4. #4
    bzh_nicolas

    Re : Algorithme

    Tu veux faire toutes les combinaisons avec 1, 2, 3,..., x chiffres ? D'ailleurs combien c'est le nombre maximum de chiffres ?
    Car ça risque d'en faire des feuilles...
    On a déjà
    12^3 = 1 728 possibilités avec 3 chiffres
    12^6 = 2 985 984 possibilités avec 6 chiffres

    Sinon c'est assez simple à programmer.
    Après c'est une question de présentation pour l'impression.
    Dernière modification par bzh_nicolas ; 14/11/2010 à 12h47.

  5. A voir en vidéo sur Futura
  6. #5
    totio94

    Re : Algorithme

    Citation Envoyé par whoami Voir le message
    Et ton problème ressemble tellement à un exercice de cours que c'est certainement le cas ...
    Non ce n'est pas pour les cours, je suis en 2ème année de bac pro electrotechnique. .

    Oui mon seul but est d'avoir une impression. .

    et c'est pas grave que ça m'imprime 100pages, c'est le resultat que je veut ^^.
    Vraiment, ce que je veut, c'est toute les combinaison possible à 3, 4 ou 6 chiffre ( quattre en prioritée ). J'ai déjà fait ça à la main, j'en suis à 153B
    donc en gros ça fait 0000-0001-0002-0003 et ainsi de suite jusqu'à BBBB ( pour 4 chiffre ) quand on arrive par exemple sur un nombre type ' 0199, les chiffres après seront 019A 019B 01A0 01A1.... "

    Si quelqu'un pouvais m'indiquer un programme déjà fait, ou le pavé de programation pour, ou la formule pour tableur, ça serait super . Merci

  7. #6
    bzh_nicolas

    Re : Algorithme

    X (nombre de chiffre du digicode) boucle for imbriquées parcourant chacune la séquence de 0 à B.
    Ou si tu veux t'amuser, tu peux utiliser les fonctions récursives.
    Pour la mise en page, suivant le langage que tu utilises, tu devrais trouver des modules tout fait sur le net, voire directement intégrés au langage.
    Autre solution, tu fais un programme en ligne de commande et tu rediriges la sortie vers un fichier texte. Il te suffira ensuite d'ouvrir ce fichier dans n'importe quel traitement de texte et de le mettre en colonne.
    PS : gaffe au temps de calcul, j'ai pas testé, mais pour 6 chiffres, ça doit être assez long quand même.
    Dernière modification par bzh_nicolas ; 14/11/2010 à 17h14. Motif: précisions

  8. #7
    Philou67

    Re : Algorithme

    Citation Envoyé par bzh_nicolas Voir le message
    X (nombre de chiffre du digicode) boucle for imbriquées parcourant chacune la séquence de 0 à B.
    Les boucles imbriquées, ce n'est pas très souple si l'on veut gérer les différents cas de nombre de chiffres dans une combinaison.
    Ou si tu veux t'amuser, tu peux utiliser les fonctions récursives.
    C'est déjà plus souple.

    Un autre algorithme est d'implémenter un nouvel opérateur d'addition. Voici un algorithme implémenté en perl (on peut extraire l'algorithme en ne conservant que les lignes de commentaires, préfixées par #) :
    Code:
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    # Nombre de chiffre à traiter
    my $nb_chiffre = $ARGV[0] // 4;
    
    # Liste des chiffres
    my @chiffres = ("0" .. "9", "A", "B");
    
    # Liste des indices des chiffres
    my @indices = map 0, 1 .. $nb_chiffre;
    
    # Dernier nombre
    my $dernier = "B" x $nb_chiffre;
    
    # Nombre courant
    my $courant;
    
    # Faire ... jusqu'à ce que le nombre courant soit le dernier
    do {
      # Composer le nombre courant à partir des indices des chiffres
      $courant = join "", map $chiffres[$_], reverse @indices;
      print "[$courant]\n";
    
      # Définir l'incrément du premier chiffre (et s'en servir comme retenue)
      my $retenue = 1;
    
      # Parcourir les chiffres
      map {
        # Et ajouter la retenue (ou l'incrément pour le premier chiffre)
        $_++ if $retenue;
    
        # Si le chiffre courant dépasse le nombre chiffre possible
        if ($_ >= scalar(@chiffres)) {
          # Revenir au chiffre 0
          $_ = 0;
        }
        else {
          # Sinon supprimer la retenue
          $retenue = 0;
        }
      } @indices;
    } until $courant eq $dernier;
    PS : gaffe au temps de calcul, j'ai pas testé, mais pour 6 chiffres, ça doit être assez long quand même.
    Pour un code à 4 chiffres, l'implémentation précédente prend 0,3s (sans l'affichage), et 3s pour un code à 5 chiffres, et 43s pour un code à 6 chiffres, au delà, ce sera de l'ordre de 43*11, soit près de 8mn).
    :'( Plus j'apprends, et plus je mesure mon ignorance

  9. #8
    bzh_nicolas

    Re : Algorithme

    Citation Envoyé par Philou67 Voir le message
    Les boucles imbriquées, ce n'est pas très souple si l'on veut gérer les différents cas de nombre de chiffres dans une combinaison.
    Suivant le langage on peut utiliser des instruction de saut. "break" en C par exemple, par contre ce n'est pas du code propre
    Citation Envoyé par Philou67 Voir le message
    C'est déjà plus souple.
    Mais beaucoup plus complexe pour quelqu'un qui ne maitrise pas parfaitement la programmation

    Citation Envoyé par Philou67 Voir le message
    Pour un code à 4 chiffres, l'implémentation précédente prend 0,3s (sans l'affichage), et 3s pour un code à 5 chiffres, et 43s pour un code à 6 chiffres, au delà, ce sera de l'ordre de 43*11, soit près de 8mn).
    Pour toutes les possibilités !! Par curiosité, tu as quoi comme processeur ?

  10. #9
    Philou67

    Re : Algorithme

    Citation Envoyé par bzh_nicolas Voir le message
    Suivant le langage on peut utiliser des instruction de saut. "break" en C par exemple, par contre ce n'est pas du code propre
    Ce n'est pas de cette souplesse que je voulais parler, mais du fait qu'il faut reprogrammer les imbrications de boucles pour chaque nombre de digits du digicode (4 imbrications pour un digicode à 4 chiffres, 5 imbrications pour ....)
    Mais beaucoup plus complexe pour quelqu'un qui ne maitrise pas parfaitement la programmation
    C'est vrai, mais c'est très formateur
    Pour toutes les possibilités !! Par curiosité, tu as quoi comme processeur ?
    Interl(R) Pentium(R) Dual CPU
    E2160 @ 1.80GHz
    1.79 GHz, 1,99 Go de RAM.
    (sous XP, avec un bon paquet d'applications qui tournent).
    :'( Plus j'apprends, et plus je mesure mon ignorance

  11. #10
    JPL
    Responsable des forums

    Re : Algorithme

    Si ce n'est pas un exercice de cours quel est l'intérêt d'obtenir une telle liste dont la lecture n'a rien de passionnant ?
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  12. #11
    bzh_nicolas

    Re : Algorithme

    Citation Envoyé par JPL Voir le message
    Si ce n'est pas un exercice de cours quel est l'intérêt d'obtenir une telle liste dont la lecture n'a rien de passionnant ?
    Ben si t'as quelques mois (années) tu peux te pointer devant un immeuble et essayer toutes les combinaisons pour ouvrir la porte...

  13. #12
    danyvio

    Re : Algorithme

    Citation Envoyé par bzh_nicolas Voir le message
    Tu veux faire toutes les combinaisons avec 1, 2, 3,..., x chiffres ? D'ailleurs combien c'est le nombre maximum de chiffres ?
    Car ça risque d'en faire des feuilles...
    On a déjà
    12^3 = 1 728 possibilités avec 3 chiffres
    12^6 = 2 985 984 possibilités avec 6 chiffres

    Sinon c'est assez simple à programmer.
    Après c'est une question de présentation pour l'impression.
    En fait, les combinaisons valides d'un digicodes sont composées de chiffres + lettres différents. Il y a moins de combinaisons qu'indiqué dans la citation, mais tout de même pas mal !
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  14. #13
    totio94

    Re : Algorithme

    Citation Envoyé par Philou67 Voir le message
    Code:
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    # Nombre de chiffre à traiter
    my $nb_chiffre = $ARGV[0] // 4;
    
    # Liste des chiffres
    my @chiffres = ("0" .. "9", "A", "B");
    
    # Liste des indices des chiffres
    my @indices = map 0, 1 .. $nb_chiffre;
    
    # Dernier nombre
    my $dernier = "B" x $nb_chiffre;
    
    # Nombre courant
    my $courant;
    
    # Faire ... jusqu'à ce que le nombre courant soit le dernier
    do {
      # Composer le nombre courant à partir des indices des chiffres
      $courant = join "", map $chiffres[$_], reverse @indices;
      print "[$courant]\n";
    
      # Définir l'incrément du premier chiffre (et s'en servir comme retenue)
      my $retenue = 1;
    
      # Parcourir les chiffres
      map {
        # Et ajouter la retenue (ou l'incrément pour le premier chiffre)
        $_++ if $retenue;
    
        # Si le chiffre courant dépasse le nombre chiffre possible
        if ($_ >= scalar(@chiffres)) {
          # Revenir au chiffre 0
          $_ = 0;
        }
        else {
          # Sinon supprimer la retenue
          $retenue = 0;
        }
      } @indices;
    } until $courant eq $dernier;
    Cool merci !! Je compile ça avec quoi comme logiciel ? comment je fait pour faire fonctionner ce code ?

  15. #14
    Philou67

    Re : Algorithme

    Le source est écrit en perl, il faut donc installer un interpréteur perl ou utiliser l'algorithme (les commentaires écrit après le caractère #) pour le programmer en C).
    :'( Plus j'apprends, et plus je mesure mon ignorance

Discussions similaires

  1. algorithme
    Par invite72fedd95 dans le forum Électronique
    Réponses: 0
    Dernier message: 17/01/2010, 12h34
  2. Algorithme
    Par invite2db80aee dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 21/10/2009, 14h43
  3. algorithme
    Par invite70424c07 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 27/09/2009, 13h37
  4. algorithme
    Par invite56f88dc9 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 30/11/2006, 18h14
  5. algorithme
    Par inviteac13aab3 dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 25/06/2006, 16h29