Quando ero più giovane, gioco con un gioco di parole chiamato Catena di parole . È stato molto semplice Il primo giocatore sceglie una parola; il giocatore successivo dice un'altra parola che inizia con la stessa lettera con cui è terminata la parola precedente. Questo continua all'infinito finché qualcuno non si arrende! Il trucco è che non puoi usare la stessa parola due volte (a meno che tutti non dimenticassero che quella parola è stata usata!). Di solito giochiamo con un determinato argomento per renderlo più difficile. Ma ora, voglio che tu faccia un programma per farlo per me.
Sfida
Scrivi un programma o una funzione completi per trovare tutte le catene di parole più lunghe possibili usando un determinato set di parole e inizia la parola.
Questo è code-golf , quindi vince il codice più corto!
Ingresso
Ci sono due input: un elenco e una parola iniziale. La parola iniziale non sarà nell'elenco. Gli input sono tutti in caratteri ASCII minuscoli e l'elenco non conterrà parole duplicate.
Produzione
Tutte le sequenze di parole dell'elenco in modo tale che:
La parola iniziale è la prima parola della sequenza.
Ogni parola successiva inizia con la stessa lettera dell'ultima lettera della parola precedente.
La lunghezza della sequenza è la più lunga possibile .
Se sono presenti più sequenze più lunghe, emetterle tutte.
La sequenza non deve necessariamente contenere tutte le parole dell'elenco. A volte ciò non è possibile (vedi testcase). Ancora una volta, nessuna parola può essere usata due volte!
Casi test
In: [hello, turtle, eat, cat, people] artistic
Out: [artistic, cat, turtle, eat]
In: [lemonade, meatball, egg, grape] ham
Out: [ham, meatball, lemonade, egg, grape]
In: [cat, cute, ewok] attic
Out: [attic, cute, ewok]
In:[cat, cute, ewok, kilo, to, otter] attic
Out: [attic, cute, ewok, kilo, otter]
In:[cat, today, yoda, attic] ferret
Out: [ferret, today, yoda, attic, cat]
In: [cancel, loitering, gnocchi, improv, vivic, child, despair, rat, tragic, chimney, rex, xylophone] attic
Out: [[attic, child, despair, rat, tragic, cancel, loitering, gnocchi, improv, vivic, chimney], [attic, cancel, loitering, gnocchi, improv, vivic, child, despair, ra', tragic, chimney]]
In: [cat, today, yoda, artistic, cute, ewok, kilo, to, otter] attic
Out: [attic, cat, today, yoda, artistic, cute, ewok, kilo, otter]