Projet 19 : Chaîne de mots
Description du mini projet
Le but est d'écrire un programme qui prend en entrée deux mots et qui retourne un chemin possible permettant de passer de l'un à l'autre en utilisant une chaîne de mots issus du dictionnaire. Pour passer d'un mot à l'autre, la seule opération autorisée est la substitution d'une lettre. On peut noter que tous les mots doivent être de la même longueur, ce qui élimine déjà une bonne partie du dictionnaire.
Par exemple, pour passer de mains
à papas
, voici les cinq solutions possibles :
Mot de départ ? mains
Mot d'arrivée ? papas
dictionnaire de 5891 mots de 5 lettres
nb nouveaux successeurs : 14
nb nouveaux successeurs : 15
nb nouveaux successeurs : 44
nb nouveaux successeurs : 102
Solution : mains maias mayas payas papas
Solution : mains maias manas panas papas
Solution : mains pains paies papes papas
Solution : mains maias matas patas papas
Solution : mains maias raias rapas papas
profondeur : 5
Bien entendu, plus le mot de départ est long et moins la probabilité qu'il y ait de résultat est grande.
Cahier des charges
Vous utiliserez un fichier des mots français qu’il faudra convertir en liste.
On demande les deux mots à l'utilisateur, on lit le dictionnaire et on retient seulement les mots qui ont la même longueur que les mots entrés
Le but est de connaître quels sont les mots auxquels on peut accéder à partir de chaque mot du dictionnaire. Par exemple, pour « cat », on doit avoir « cot, cut, fat, car, caw… », pour « dot » on doit avoir « cot, dog, lot, not… », etc.
Une fois qu'on aura ce dictionnaire de couples (mot parent, mots enfants), toutes les informations dont on a besoin s'y trouvent : si on veut passer de « cat » à « dog », on analysera tous les mots valides à partir de « cat », puis les mots valides à partir de chacun de ces mots et ainsi de suite.
Complément : Palier 4 : Une fois le palier 3 franchi
Pour ajouter de la difficulté, vous pourrez vous demander comment trouver la chaîne la plus courte et comment trouver toutes les chaînes possibles. Je vous conseille de vous renseigner sur les graphes et les algorithmes qui permettent de répondre à ce genre de problème plus facilement.
Pensez également à toutes les optimisations que vous pourriez apporter à votre programme : certaines méthodes sont bien plus rapides que d'autres pour déterminer si passer de « cat » à « cot » est une opération valide, par exemple. D'ailleurs, quelle serait la méthode la plus rapide pour trouver tous les mots valides que l'on peut utiliser après un mot donné ?