Le changeur de mots est un jeu où vous essayez de transformer un mot en un autre via des modifications à un seul caractère, chaque étape étant son propre mot. Pour ce défi, les modifications peuvent être des remplacements, des insertions ou des suppressions. Par exemple, WINNER → LOSER peut être fait avec cet itinéraire (il peut y en avoir d'autres):
WINNER
DINNER
DINER
DINE
LINE
LONE
LOSE
LOSER
Formulé autrement, vous devez être capable d'atteindre un mot de l'autre en ne passant que par d'autres mots à une distance Levenshtein de 1 à chaque fois.
Codage
Vous recevrez une liste de mots et deux mots et vous devez sortir un itinéraire valide d'un mot à l'autre s'il existe un itinéraire ou une valeur constante distincte ou un comportement cohérent si aucun itinéraire n'existe.
- Vous pouvez supposer que les mots saisis sont tous les deux dans la liste de mots
- La liste de mots peut être prise via n'importe quel format plat pratique.
- Les listes, les ensembles, les essais, les chaînes séparées par des espaces et les fichiers séparés par des lignes sont tous valides (par exemple), mais un graphique précalculé de la contiguïté de Levenshtein ne l'est pas.
- La route de sortie doit inclure les deux mots d'entrée, mais ce qui commence et se termine n'a pas d'importance.
- Si aucune route n'est trouvée, vous pouvez sortir une constante spécifique, une valeur falsifiée, une liste vide, lever une exception, quitter avec un code différent de zéro ou tout autre comportement qui se produit en temps fini.
- L'itinéraire n'a pas besoin d'être optimal et il n'y a aucune exigence de l'itinéraire à suivre
- La complexité informatique n'a pas d'importance, mais votre programme doit être garanti de manière à se terminer dans un laps de temps limité. (même si cela irait au-delà de la mort thermique de l'univers)
- Vous pouvez supposer que tous les mots sont entièrement composés de lettres dans le même cas
Exemples de cas de test
- CHAT → CHIEN; [CHAT, CHIEN, COG, COT, GRENOUILLE, GROG, BOG]
- CHAT, COT, COG, CHIEN
- BAIN → DOUCHE; [BAIN, DOUCHE, CHAPEAU, CHAPEAU, BAT, SAT, SCIE, TRUIE, AFFICHAGE, COMMENT]
- Aucun itinéraire trouvé
- BREAK → FIX; [BREAK, FIX, BEAK, BREAD, READ, BEAD, RED, BED, BAD, BID, FAD, FAX]
- PAUSE, PAIN, PERLE, MAUVAIS, FAD, FAX, FIX
- CONSTRUIRE → DÉTRUIRE; [CONSTRUIRE, DÉTRUIRE, CONSTRUIRE, CONDUIRE, GUILDE, DORÉ, GILL, BILL, DILL, REMPLIR, DÉTRUIRE, STRUCTURE, CONSTRUIRE]
- Aucun itinéraire trouvé
- CARTE → CONSEIL; [CARTE, CONSEIL, BARD]
- CARD, BARD, BOARD
- DEMON → ANGEL; [DEMON, ANGEL]
- Aucun itinéraire trouvé
- DERNIER → PASSÉ; [DERNIER, PASSÉ, BLAST, CAST, NOIR, FANTÔME, POST, BOAST]
- DERNIER, PASSÉ
- INSÉRER → SUPPRIMER; Cette liste de mots
- INSÉRER, INVERSER, INVENTER, INBENT, UNBENT, UNBEND, UNBIND, UNKIND, UNKING, INKING, IRKING, DIRKING, DARKING, DARLING, ARLING, AILING, SIRING, SERING, SERINE, NERINE, NERITE, CERITE, CERATE, DERATE, DELATE, SUPPRIMER