Partage
  • Partager sur Facebook
  • Partager sur Twitter

Tous les mots possibles en trois lettre

Sujet résolu
    10 février 2006 à 13:38:23

    Hello world
    J'aimerais faireun script qui liste tous les mots possibles en trois lettres, contenants chiffres et lettres. J'ai donc fais ceci:
    <?php
    $max = 3 ;

    function lettre($nbr , $chaine='')
            {
            global $max , $tableau;
            foreach($tableau as $case => $lettre)
                    {
                    echo $chaine.$lettre.'<br />';
                           
                    if($nbr < $max)
                            lettre($nbr+1 , $chaine.$lettre) ;
                    }
            }

    $tableau =array();

    for($i=48 ; $i<58 ; $i++)
        $tableau[$i] = chr($i);

    for($i=65 ; $i<91 ; $i++)
        $tableau[$i] = chr($i);
           
    for($i=97 ; $i<123 ; $i++)
        $tableau[$i] = chr($i);

    lettre(1);

    ?>

    Mais essayez et le résultat n'est pas celui attendu:
    0
    00
    000
    001
    002
    003
    004
    005
    006
    007
    008
    009
    00A
    00B
    00C
    00D
    00E
    00F
    00G
    00H
    00I
    00J
    00K
    00L
    00M
    00N
    00O
    00P

    J'en conclut que j'ai du faire une erreur dans mon code, mais je ne vois pas laquelle.
    Merci de m'éclairer
    • Partager sur Facebook
    • Partager sur Twitter
      10 février 2006 à 15:37:57

      Salut.
      Bon, je sais pas trop comment faire, mais, comment obtients-tu ton résultat ? Dans quel but ?
      Ciaoooooo
      • Partager sur Facebook
      • Partager sur Twitter
        10 février 2006 à 15:47:36

        EUh t'utilise la fonction lettre DANS la fonction lettre?
        • Partager sur Facebook
        • Partager sur Twitter
          10 février 2006 à 17:40:16

          JaKhris > J'obtiens ce résultat en executant le script tel quel. Je veut juste essayer de faire ça, sans but précis.

          CrusH > Oui, mais seulement dans le cas où $nbr < $max
          • Partager sur Facebook
          • Partager sur Twitter
            11 février 2006 à 15:27:58

            <?php
            // Création de la fonction incrémentation avec les sauts pour prendre en compte les 3 plages
            function incrementer ($nb_a_incrementer)
            {
                    if ($nb_a_incrementer >= 48 AND $nb_a_incrementer <= 57
                    OR  $nb_a_incrementer >= 65 AND $nb_a_incrementer <= 90
                    OR  $nb_a_incrementer >= 97 AND $nb_a_incrementer <= 122)
                    {
                            $nb_a_incrementer++;
                    }
                    else if ($nb_a_incrementer == 58)
                    {
                            $nb_a_incrementer = 65;
                    }
                    else if ($nb_a_incrementer == 91)
                    {
                            $nb_a_incrementer = 97;
                    }
                   
                    return ($nb_a_incrementer);
            }

            // Fonction d'incrémentation globale du mot de 3 caractères
            function incrementation_globale ($nb_1, $nb_2, $nb_3)
            {
                    if ($nb_2 == 122 OR $nb_3 == 122)
                    {
                            if ($nb_2 == 122)
                            {
                                    incrementer ($nb_1);
                                    $nb_2 = 48;
                            }
                            if ($nb_3 == 122)
                            {
                                    incrementer ($nb_2);
                                    $nb_3 = 48;
                            }
                    }
                    else
                    {
                            incrementer ($nb_3);
                    }
                   
                    return $nb_1, $nb_2, $nb_3;
            }

            // Prépositionnement pour le listage
            $nb_1 = 48;
            $nb_2 = 48;
            $nb_3 = 48;

            // Le listage
            while ($nb_1 != 122 OR $nb_2 != 122 OR $nb_3 != 122)
            {
                    echo chr ($nb_1) . chr ($nb_2) . chr ($nb_3) . "<br />";
                    $nb_1, $nb_2, $nb_3 = incrementation_globale ($nb_1, $nb_2, $nb_3);
            }
            ?>



            Ca ne marche pas nomplus mais j'doit pas en être loin. :)

            Je bloque sur l'encastrement des fonctions. Les returns et trucs comme ca...

            Si tu réussi à le finir, donne nous la solution stp. Perso ca m'intéresse ;)

            Merci !
            • Partager sur Facebook
            • Partager sur Twitter
              12 février 2006 à 10:38:02

              <?php
              // Création de la fonction incrémentation avec les sauts pour prendre en compte les 3 plages
              function incrementer ($nb_a_incrementer)
              {
                      if ($nb_a_incrementer >= 48 AND $nb_a_incrementer <= 56
                      OR  $nb_a_incrementer >= 65 AND $nb_a_incrementer <= 89
                      OR  $nb_a_incrementer >= 97 AND $nb_a_incrementer <= 121)
                      {
                              $nb_a_incrementer++;
                      }
                      else if ($nb_a_incrementer == 57)
                      {
                              $nb_a_incrementer = 65;
                      }
                      else if ($nb_a_incrementer == 90)
                      {
                              $nb_a_incrementer = 97;
                      }
                     
                      return ($nb_a_incrementer);
              }

              // Fonction d'incrémentation globale du mot de 3 caractères
              function incrementation_globale ($nb_1, $nb_2, $nb_3)
              {
                      if ($nb_2 == 122 OR $nb_3 == 122)
                      {
                              if ($nb_2 == 122 AND $nb_1 != 122)
                              {
                                      $nb_1 = incrementer ($nb_1);
                                      $nb_2 = 48;
                              }
                              if ($nb_3 == 122)
                              {
                                      $nb_2 = incrementer ($nb_2);
                                      $nb_3 = 48;
                              }
                              if ($nb_2 == 122 AND $nb_1 == 122)
                              {
                                      $nb_3 = incrementer ($nb_3);
                              }
                      }
                      else
                      {
                              $nb_3 = incrementer ($nb_3);
                      }
                     
                      // Construction du taleau à retourner
                      $nb_['1'] = $nb_1;
                      $nb_['2'] = $nb_2;
                      $nb_['3'] = $nb_3;
                     
                      return $nb_;
              }

              // Prépositionnement pour le listage
              $nb_1 = 48;
              $nb_2 = 48;
              $nb_3 = 48;

              // Le listage
              while ($nb_1 != 122 OR $nb_2 != 122 OR $nb_3 != 122)
              {
                      // Affichage du mot
                      echo chr ($nb_1) . chr ($nb_2) . chr ($nb_3) . "<br />";
                     
                      // Incrémentation globale du mot
                      $nb_ = incrementation_globale ($nb_1, $nb_2, $nb_3);
                     
                      // Remise en place des variables pour la prochaine boucle
                      $nb_1 = $nb_['1'];
                      $nb_2 = $nb_['2'];
                      $nb_3 = $nb_['3'];
              }
              ?>


              J'epère pour toi que ce script ne servira pas à afficher tout les mots de 3 lettres, tu va voir que l'ordi aurras beaucoup de mal. :o

              Désolé pour le temps mais j'ai pas pu reposter avant 12 heures et je me suis couché une heure avant. C'est pas génial ce truc !! Et si j'avais édité mon message, il ne serais pas remonté. :(

              Bon bref ! Voilà, normalement ca marche. ;) Et... Ca te sert à quoi ce script ? :euh:

              A bientôt !
              • Partager sur Facebook
              • Partager sur Twitter
                12 février 2006 à 10:52:53

                Hum, je pense qu'on peut faire plus long :p
                $chaine='abcdefghijklmnopqrstuvwxyz0123456789';

                for($i=0;$i<strlen($chaine);++$i)
                for($j=0;$j<strlen($chaine);++$j)
                for($k=0;$k<strlen($chaine);++$k)
                echo $chaine{$i}.$chaine{$j}.$chaine{$k}."\n";
                • Partager sur Facebook
                • Partager sur Twitter

                Tous les mots possibles en trois lettre

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown