Énigma generator

Énigma generator

« Pvouez-vouvs lrie ctete prhsae ? » Je suis tombé sur une étude de Cambridge, qui démontre que notre cerveau est capable de lire un texte même si les mots de ce dernier a les lettres mélangées, en gardant tout de même la première et la dernière lettre à leur place respective ; comme la première phrase de cette introduction. Très bien. Mais est-ce possible de coder cela ? Je m’y suis attardé.

L’idée

L’étude a été publiée depuis un certain temps déjà. La conclusion est que le cerveau humain ne lit pas le mot lettre par lettre, mais le mot comme un tout. Je ne sais pas si cela a déjà été fait au niveau informatique, mais je me suis essayé à coder un générateur de texte conventionnel en un texte qui aurait les propriétés précitées. C’est tout à fait possible de le faire, et je l’ai réalisé avec le langage Javascript. Voici mon code sur codepen, avant l’explication :

Énigma generator

Explication du code

Le code n’est pas très compliqué. Mais les différentes lignes commentées ici vous mettra sur la piste de ma méthode. Qu’avons-nous besoin ?

  1. Ligne 4 : Nous devons dans un premier temps extraire tous les mots du texte, afin de les traiter un-par-un. Heureusement, les mots ont une règle ; ils sont séparés par un espace. Nous pouvons donc « spliter » le texte avec la fonction qui s’y rapporte.
  2. Ligne 7,8 & 9 : nous devons ensuite extraire pour chaque mot, la première lettre, la dernière lettre et le mot sans la dernière et la première lettre. Vous suivez toujours ? C’est faisable avec la fonction « slice » de Javascript (jQuery).
  3. Avant de recomposer chaque mot, il nous faut mélanger les lettres du mot sans la première et la dernière lettre. C’est possible avec la fonction codée à la ligne 10. Je ne la connaissais pas. J’ai demandé à Google pour cette partie-là 😉
  4. Ça y est, nous pouvons recomposer chaque mot. Je le fais à la ligne 11, et je suis toujours dans ma boucle puisqu’il s’agit bien de chaque mot du texte. Je recompose le tout à la ligne 12.
  5. Remarque ; vous remarquerez qu’il y a une condition déclarée à la ligne 6. Eh oui, sans elle, tous les mots, y compris les « mots » composés d’une lettre, pourraient être affectés par le travail décris ci-dessus. Dès lors, la ponctuation risquerait d’en être affectée. Faites le test ; si vous enlevez la condition, la ponctuation sera doublée ! (logique) – une amélioration du code serait de ne pas toucher aux mots possédant une ponctuation. (avec une REGEX sans doute)

Conclusion

Et voilà, vous avez maintenant sous la main, un générateur d’énigmes. Soit un texte aux lettres mélangées, mais cependant toujours lisible. Je l’ai nommée : Énigma generator. (le dernier Batman m’a sans doute influencé :D). À vous de le tester, et d’y générer le texte de votre choix !

Newsletter