Word Changer es un juego en el que intentas convertir una palabra en otra a través de ediciones de un solo carácter, y cada paso es su propia palabra. Para este desafío, las ediciones pueden ser reemplazos, inserciones o eliminaciones. Por ejemplo, WINNER → LOSER se puede hacer con esta ruta (puede haber otras):
WINNER
DINNER
DINER
DINE
LINE
LONE
LOSE
LOSER
Dicho de otra manera, debe poder alcanzar una palabra de la otra yendo solo a través de otras palabras a una distancia de Levenshtein de 1 cada vez.
Codificación
Se le proporcionará una lista de palabras y dos palabras y debe generar una ruta válida de una palabra a la otra si existe una ruta o un valor constante distinto o un comportamiento constante si no existe una ruta.
- Puede suponer que las palabras de entrada están ambas en la lista de palabras
- La lista de palabras se puede acceder a través de cualquier formato plano conveniente.
- Las listas, los conjuntos, los intentos, las cadenas separadas por espacios y los archivos separados por líneas son todos válidos (por ejemplo), pero un gráfico precalculado de adyacencia de Levenshtein no lo es.
- La ruta de salida debe incluir ambas palabras de entrada, pero lo que comienza y termina no importa.
- Si no se encuentra ninguna ruta, puede generar una constante específica, un valor falso, una lista vacía, lanzar una excepción, salir con un código distinto de cero o cualquier otro comportamiento que ocurra en un tiempo finito.
- La ruta no necesita ser óptima y no se requiere qué ruta se debe tomar
- La complejidad computacional no importa, sin embargo, se debe garantizar que su programa termine en un tiempo limitado. (incluso si fuera más allá de la muerte por calor del universo)
- Puede suponer que todas las palabras están completamente compuestas de letras en el mismo caso
Ejemplos de casos de prueba
- GATO → PERRO; [GATO, PERRO, COG, COT, RANA, GROG, BOG]
- CAT, COT, COG, PERRO
- BAÑO → DUCHA; [BAÑO, DUCHA, HATH, SOMBRERO, BAT, SAT, SAW, SOW, SHOW, CÓMO]
- No se encontró ruta
- BREAK → FIX; [BREAK, FIX, BEAK, BREAD, READ, BEAD, RED, BED, BAD, BID, FAD, FAX]
- BREAK, BREAD, BEAD, BAD, FAD, FAX, FIX
- CONSTRUIR → DESTRUIR; [CONSTRUIR, DESTRUIR, CONSTRUIR, CULPAR, GUILD, DORAR, GILL, BILL, DILL, FILL, DESTRUCT, ESTRUCTURA, CONSTRUCT]
- No se encontró ruta
- TARJETA → TABLERO; [TARJETA, TABLERO, BARDO]
- TARJETA, BARDO, TABLERO
- DEMONIO → ÁNGEL; [DEMONIO, ÁNGEL]
- No se encontró ruta
- ÚLTIMO → PASADO; [ÚLTIMO, PASADO, BLAST, CAST, BLACK, GHOST, POST, BOAST]
- ULTIMO, PASADO
- INSERTAR → ELIMINAR; Esta lista de palabras
- INSERTAR, INVERTIR, INVENTAR, INBENTAR, DESMONTAJE, DESMONTAJE, DESVINCULAR, DESVINCULAR, DESCUBRIR, INKING, IRKING, DIRKING, DARKING, DARLING, ARLING, AILING, SIRING, SERING, SERINE, NERINE, NERITE, CERITE, CERATE, DERATE, DELATE, ELIMINAR