Recherche d'anagrammes
Le problème
Écrire un logiciel qui, partant d'un fichier de dictionnaire (= une liste de chaînes de caractères) et d'une chaîne de caractères qui contient peut-être un ou plusieurs anagrammes, doit
- essayer de décomposer la chaîne en termes du dictionnaire
- afficher les meilleurs résultats
- s'il reste des lettres de l'anagramme non utilisées, afficher ces lettres.
Sans dictionnaire, le logiciel doit être capable d'afficher toutes les permutations possibles sur les lettres de l'anagramme.
Le logiciel doit être lancable en ligne de commande ou à l'aide d'une interface graphique. Il peut s'agir ou non du même exécutable.
La ligne de commande doit accepter les paramètres suivants :
- nom du fichier de dictionnaire
- chaîne de caractères pouvant contenir des anagrammes
- une limite au nombre de combinaisons à afficher
L'interface graphique doit permettre de choisir les mêmes paramètres, ainsi que d'afficher toutes les combinaisons dans un champ ou une liste quelconque.
Le logiciel est autorisé à précompiler le dictionnaire et à sauvegarder une version précompilée de ce dictionnaire, à condition que ce soit totalement transparent pour l'utilisateur : si celui-ci ajoute ou enlève un mot au dictionnaire, le logiciel doit recompiler sans que l'utilisateur ait quoi que ce soit à préciser.
Les autres détails sont laissés à l'appréciation du développeur.
Ordres de grandeur
L'anagramme peut faire de 5 à 150 caractères, mais on s'attend surtout à des anagrammes de 10 à 20 caractères.
Le dictionnaire peut faire de 10 à plusieurs dizaines de milliers de termes mais on s'attend surtout à entre 200 et 300 termes.
Les chaînes ne contiennent que des caractères alphabétiques latins.
Champ d'application
Recherche de noms d'auteurs dissimulés dans des anagrammes dans des ouvrages de la Renaissance. Si, si. Mais on peut aussi jouer au Scrabble avec.
Inscrits
Np237 |
C + GLib |
Yoric |
OCaml + gtk |