Dada uma sequência de letras e um conjunto de palavras, produza uma ordem das palavras para que elas possam ser encontradas na sequência, descartando letras desnecessárias. As palavras podem ocorrer mais de uma vez no conjunto de palavras. A sequência de entrada e todas as palavras consistirão em 1 a 1000 letras minúsculas cada. As letras a serem descartadas podem ocorrer dentro das palavras ou entre as palavras.
Seu programa ou função pode aceitar a sequência de letras e as palavras como listas, uma sequência de caracteres ou de STDIN e deve gerar todas as palavras na ordem correta como saída de uma lista ou sequência de caracteres. Se houver mais de uma solução correta, envie apenas uma delas. Se não houver uma solução correta, produza uma lista vazia ou uma sequência vazia.
Exemplos:
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)
Isso é código de golfe. O menor número de bytes vence.
Editar: explicou que caracteres extras podem estar dentro das palavras.
ccantes, bbmas as substrings bbe ccaparecem apenas uma vez e a bbsubstring aparece primeiro.
ccbcbparte da string que produzimos a ccsaída bbdepois de largar o meio c.