Data una stringa di lettere e un insieme di parole, emetti un ordine delle parole in modo che possano essere trovate nella stringa facendo cadere lettere che non sono necessarie. Le parole possono capitare più di una volta nel set di parole. La stringa di input e tutte le parole saranno composte da 1 a 1000 lettere minuscole ciascuna. Le lettere da rilasciare possono apparire all'interno di parole o tra parole.
Il programma o la funzione può accettare la stringa di lettere e le parole come elenchi, stringhe o da STDIN e deve generare tutte le parole in un ordine corretto come output di elenco o stringa. Se esiste più di una soluzione corretta, emetterne solo una. Se non è possibile una soluzione corretta, emettere un elenco vuoto o una stringa vuota.
Esempi:
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)
Questo è il codice golf. Vince il numero più basso di byte.
Modifica: spiegato che i caratteri extra possono essere all'interno delle parole.
ccprima, bbma le sottostringhe bbe ccappaiono solo una volta e la bbsottostringa appare per prima.
ccbcbparte della stringa emettiamo l' output ccquindi bbdopo aver lasciato cadere il centro c.