![]() |
Un mot étant donné, l'ordinateur doit fournir l'anagramme obtenu en inversant son ordre d'écriture : c'est un anagramme particulier car tout "mot" obtenu par le mélange des lettres d'un mot est, par définition, un anagramme de ce mot. On peut rechercher les palindromes : qui peuvent se lire identiquement de gauche à droite et de droite à gauche.
Exemple :
Cahier des charges : |
Vous devez autoriser les références circulaires (récursion) et le mot inversé doit se construire et apparaître dans une même cellule voisine du mot donné (programmation fonctionnelle).
Solution : |
La solution donnée est fonctionnelle (programmation récursive) : le résultat apparaît dans une cellule précise : B2 est nommée ici inv. Il faut donc autoriser les références circulaires et le nombre d'itérations : 100 par défaut : largement suffisant ici !
Le mot à inverser est donné en cellule A2 et nommée, précisément, mot.
NBCAR(mot) retourne le nombre de caractères de la chaîne nommée mot;
STXT(mot;n;p) retourne la chaîne de longueur p extraite de mot à partir du n-ème caractère.
Le drapeau nommé d en A5 permet de réinitialiser les calculs (d = 0) et de lancer les calculs (d = 1).
Ce programme contient une boucle indexée par le compteur nommé n en B5 :
=SI(d=0;"";SI(n>0;inv&STXT(mot;n;1);inv))
En B2, on a l'équivalent d'une boucle while des langages usuels comme JavaScript :
Tant que (n > 0) faire {instruction}
Programme et exemple d'exécution : |
L'inversion de maison produit nosiam , comme on pouvait s'y attendre... :