Antecedentes
Hace tres años, este tipo Tom Murphy se le ocurrió pensar en extender la idea de un acrónimo a todas las palabras en un idioma y llamó a esto un portmantout ( portmanteau plus tout [francés para todos ]). Al definir el inglés como una lista de 108,709 palabras, logró encontrar una secuencia de 611,820 letras con las siguientes dos propiedades:
- Cada palabra en inglés está contenida en la cadena.
- Un vecindario que contiene dos letras adyacentes en la cadena es una palabra en inglés.
Aquí hay un enlace a una página en la que se puede encontrar este portmantout (junto con una explicación en video).
Un portmantout
La primera de las dos propiedades de un portmantout es fácil de entender. El segundo puede requerir alguna explicación.
Básicamente, las palabras deben superponerse. "golfcode" nunca aparecerá en un portmantout de inglés, ya que no hay una palabra que contenga el "fc". Sin embargo, puede encontrar "codegolf" en un portmantout, ya que "ego" cierra la brecha (y todos los demás pares de letras están en "código" o "golf").
Tu tarea:
Escriba un programa o función que tome una lista de cadenas y devuelva cualquier portmantout de la lista.
Este código de Python 3 verificará un portmantout.
Casos de prueba
Todas las listas están desordenadas. es decir,
{"code", "ego", "golf"} -> "codegolf"
{"more", "elm", "maniac"} -> "morelmaniac" or "morelmorelmaniac" or "morelmorelmorelmaniac" or...
Would a morelmaniac be some sort of mycologist?
{"ab", "bc", "cd", "de", "ef", "fg", "gh", "hi", "ij", "jk", "kl", "lm", "mn", "no", "op", "pq", "qr", "rs", "st", "tu", "uv", "vw", "wx", "xy", "yz", "za"} -> "abcdefghijklmnopqrstuvwxyza" or "rstuvwxyzabcdefghijklmnopqrstuvwxyzabcdef" or any 27+ letters in order
¿Y por qué no? El masivo en el sitio de Murphy, si su código se ejecuta dentro de un tiempo razonable.
Reglas
- Tu código debe detenerse.
- No necesita devolver el mismo portmantout con cada ejecución.
- Usted puede asumir todas las cadenas se componen de sólo letras en minúscula
a
a travész
. - Si no es posible portmantout, su programa puede hacer cualquier cosa. Ex:
{"most", "short", "lists"}
- Se aplican las reglas estándar para E / S y lagunas .
Este es el código de golf , por lo que gana la solución más corta (en bytes) en cada idioma. ¡Feliz golf!
{"sic", "bar", "rabbits", "cradle"} -> "barabbitsicradle"
{"mauve", "elated", "cast", "electric", "tame"} -> "mauvelectricastamelated"
(más casos de prueba)