Dada una cadena de letras y un conjunto de palabras, genera un orden de las palabras para que se puedan encontrar en la cadena colocando letras que no son necesarias. Las palabras pueden aparecer más de una vez en el conjunto de palabras. La cadena de entrada y todas las palabras constarán de 1 a 1000 letras minúsculas cada una. Las letras que se dejarán caer pueden aparecer dentro de palabras o entre palabras.
Su programa o función puede aceptar la cadena de letras y las palabras como listas, una cadena o desde STDIN, y debe mostrar todas las palabras en un orden correcto como una lista o salida de cadena. Si hay más de una solución correcta, solo envíe una de ellas. Si no hay una solución correcta posible, envíe una lista vacía o una cadena vacía.
Ejemplos:
dogcatfrog cat frog dog
-> dog cat frog
xxcatfixsxhingonxgrapexxxfishingcxat cat grape catfish fishing
-> catfish grape fishing cat
dababbabadbaccbcbaaacdacdbdd aa bb cc dd ba ba ba ab ac da db dc
-> da ab ba ba ba cc bb aa ac dc db dd
flea antelope
->
(no solution)
Este es el código de golf. El menor número de bytes gana.
Editar: explicó que los caracteres adicionales pueden estar dentro de las palabras.
ccantes bbpero las subcadenas bby ccaparecen solo una vez y la bbsubcadena aparece primero
ccbcbparte de la cadena sacamos la ccsalida bbluego de soltar el medio c.