Introducción
Un acertijo de palabras popular es convertir una palabra en otra a través de una serie de pasos que reemplazan solo una letra y que siempre resultan en una palabra válida. Por ejemplo, BAG se puede convertir a DOG a través de una ruta de cinco pasos:
BOLSA -> BAT -> CAT -> COT -> COG -> PERRO
También existen caminos más cortos en este caso; por ejemplo:
BOLSO -> BOG -> PERRO
Si uno dibujó un gráfico cuyos vértices fueron etiquetados por palabras, con un borde entre cualquier par de palabras que difieren en una letra, entonces la ruta más corta de "BOLSA" a "PERRO" consistiría en dos bordes.
Desafío
Debe escribir un programa que reciba como entrada un "diccionario" de palabras que tengan la misma longitud, que represente todas las palabras permitidas que pueden aparecer como pasos a lo largo de un camino. Debe generar al menos una "ruta más larga más corta", es decir, una ruta entre dos de las palabras que es:
no más que cualquier otro camino entre esas dos palabras;
al menos el mayor tiempo posible entre cualquier otro par de palabras en la lista.
En el contexto del gráfico descrito anteriormente, la longitud de dicha ruta es el diámetro del gráfico.
En el caso degenerado en el que ninguna de las palabras de entrada puede transformarse en ninguna de las otras, genera al menos una ruta de longitud cero, es decir, una sola palabra.
Ejemplos
La entrada ["bolsa", "murciélago", "gato", "cuna", "punto", "perro"] debería generar una ruta que atraviese las seis palabras en ese orden (u orden inverso), ya que la ruta más corta desde " la bolsa "to" dog "dentro de este diccionario es el más largo posible, cinco pasos
La entrada ["bolsa", "murciélago", "bot", "gato", "cuna", "punto", "perro"] debe proporcionar la ruta "bolsa, murciélago, bot, punto, perro" y / o su inversión.
La entrada ["código", "golf", "macho", "zumbido", "topo", "rol", "molde", "frío", "oro", "modo"] debería generar una ruta entre "código" y "golf".
La entrada ["uno", "dos", "seis", "diez"] corresponde a un gráfico sin bordes, por lo que genera una o más rutas de una sola palabra (longitud cero).
Si la entrada contiene dos palabras de longitud desigual, la salida no está definida.
Reglas
- Aplican reglas estándar de golf de código
- Habrá múltiples caminos "más cortos". Debe generar al menos uno, pero puede generar tantos como desee.
- Usted es libre de decidir cómo se pasa el diccionario de entrada a su programa.
- El código más corto en bytes gana.
[]o [[]])?