Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'algorithmie

Sujet résolu
    19 février 2015 à 17:43:07

    Bonjour à tous,

    Voilà j'ai actuellement un petit problème qui est le suivant :

    Je cherche à pouvoir faire une infinité de nombre (au moins 30.000) à partir simplement de 4 symboles (disons A, B, C, D).

    Je me suis donc dit que j'allais donner des valeurs à ces 4 lettres, afin de pouvoir faire des combinaisons :

    A = 1, B = 2, C = 3, D = 4, AB = 5, AC = 6, AD = 7, BC = 8,  BD = 9

    Puis, à partir de ces 9 chiffres, pouvoir récréer tout ce que je veux. Mais c'est là que je bloque, je ne vois pas comment faire..

    Si par exemple je veux le chiffre 27, comment décomposer cela pour obtenir ce que je veux? Sachant que chaque combinaison devra obligatoirement être unique. 

    Si quelqu'un a une idée, je suis tout ouï ! :)

    Ps : cela sera codé en C#si jamais quelqu'un connait quelque chose facilitant la tâche dans ce langage.

    Bonne soirée et merci

    -
    Edité par Stylex 19 février 2015 à 17:43:52

    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2015 à 19:35:57

      C'est une mauvaise idée de combiner les lettres pour faire d'autres chiffres ; le plus simple a priori serait de ne garder que 4 valeurs :

      A = 0 ; B = 1 ; C = 2 et D = 3 et à partir de là transformer ton nombre (en base 10 "classique") en nombre en base 4 (donc qui ne comporte que des chiffres de 0 à 3) et de là la transcription sera directe ;)

      exemple:

      27 (en base 10) = 123 (en base 4) (car 27 = 1 * 16 + 2 * 4 + 3)

      et donc 27 s'écrira BCD dans ta notation :)

      • Partager sur Facebook
      • Partager sur Twitter
      Censément, quelqu'un de sensé est censé s'exprimer sensément.
        19 février 2015 à 19:46:36

        Salut,

        Je pense que ton modèle actuel ne peut pas fonctionner car les 5 dernier symboles reprennent des symboles déjà existant.

        Exemple si tu as le nombre ABD, on ne sait pas s'il faut prendre les symboles A puis BD, ou A puis B puis D. Et en plus dans ton modèle il n'y a pas la valeur 0 (zéro), donc cela ne peut vraiment pas marcher.

        Si tu veux vraiment utiliser 4 symboles (A, B, C, D) cela veut dire que tes nombre sont en base 4. Exemple :

        27(base 10) = 1 * (4^2) + 2 * (4^1) + 3 * (4^0) = 123 (base 4)

        Donc si tu donnes à tes symboles les valeurs A = 0 ; B = 1 ; C = 2 ; D = 3

        Alors tu peux représenter 27 avec "BCD".

        Juste pour le fun, quelques petits calcules :

        • "BCD + C = BDB"
        • "BCD * BA = BCDA"

        Pour coder ça, tu peux chercher différentes méthodes pour convertir un nombre d'une base à une autre. Peut-être que l'une d'entre elles te permettra de remplacer les chiffre par tes symboles plus facilement.

          Voilà, j'espère t'avoir aidé.

        Edit : Mince, je viens de voir que j'ai dit exactement la même chose de Sehnsucht, désolé.

        -
        Edité par Aztrom 19 février 2015 à 19:48:59

        • Partager sur Facebook
        • Partager sur Twitter
          19 février 2015 à 19:52:52

          Super! Merci à vous 2 pour vos réponses assez semblables mais très utiles :)


          Je vais me pencher là dessus, effectivement je n'ai pas pensé à faire ça et ça sera probablement plus simple en terme de redondance à éviter.
           

          • Partager sur Facebook
          • Partager sur Twitter

          Problème d'algorithmie

          × 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