Partage
  • Partager sur Facebook
  • Partager sur Twitter

Algorithme de translittération

    6 décembre 2015 à 21:00:16

    Bonjour,

    j'ai de temps en temps l'occasion d'utiliser des autres alphabets, notamment l'abjad arabe. Utiliser l'unicode et changer de clavier sur la console (que j'utilise tout le temps) n'est pas très clair pour moi, et même, c'est pas le sujet. Je me suis dit que je coderai mon petit script bash. Le sujet n'est pas de l'ordre de la réalisation informatique mais de l'algorithme. Je n'ai pas beaucoup d'expérience là-dedans, mais le seul algorithme dont j'aie eu l'idée est : je définis une correspondance de chaque lettre à son équivalent, par exemple g =  غ, puis je prends la première lettre de mon entrée et je la compare à chaque correspondance jusqu'à ce que je trouve la bonne, puis je recommence pour la suivante. Mais ça ne me paraît vraiment pas optimal comme algo. Puis-je faire autrement ?

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      6 décembre 2015 à 22:34:29

      Aucun outil pour répondre à ce besoin ? Pas même ICU (et uconv en ligne de commande) ?

      Si tu tiens vraiment à le faire toi-même n'y a-t-il pas des docs techniques donnant quelques informations ? (genre ça) J'aurais plus vu le processus se rapprocher des collations (expansions/contractions) qu'un bête mapping de points de code (1 : N).

      -
      Edité par julp 6 décembre 2015 à 22:35:00

      • Partager sur Facebook
      • Partager sur Twitter
        6 décembre 2015 à 22:43:39

        Bonsoir jtruc34,

        Comme tu le sais, chaque caractère alpha-numérique a une correspondance ASCII.

        Ainsi par exemple le A équivaut à 66 en ASCII, le B 67,...jusque Z  90.

        Je ne suis pas un spécialiste du bash, mais je pense affirmer que beaucoup de langages bash ont une instruction qui convertit directement un caractère en sa valeur ASCII, ainsi que de faire des tables dont les éléments sont accessibles par indexation.

        Dès lors il est facile de créer une table indexée :

        TABLE=(caractère abjad eq A, caractère eq B,...caractère eq Z)

        où par exemple, le premier élément aurait l'index 0, le deuxième 1,...le dernier 25.

        "L’algorithme" de mon petit exemple serait :

        Acquisition du caractère alpha au clavier

        Conversion de alpha en ASCII, soit n la valeur ASCII correspondante

        acquisition du caractère abjad:  abj=TABLE(n-66)

        Envoi de abj dans la console

        Qu'en penses tu ?

        A+

        • Partager sur Facebook
        • Partager sur Twitter
          6 décembre 2015 à 23:19:21

          Effecivement, en réfléchissant trop théoriquement, j'ai oublié que je pouvais demander à mon ordinateur d'aller voir dans une case précise, et que mes caractères étaient encodés sur des nombres qui pouvaient représenter ces cases. ^^ La question était purement algorithmique, aussi je ne cherchais aucune considération sur l'Unicode :). 

          Merci

          • Partager sur Facebook
          • Partager sur Twitter

          Algorithme de translittération

          × 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