Quando eu era mais novo, costumava jogar um jogo de palavras chamado Word chain . Foi muito simples. O primeiro jogador escolhe uma palavra; o próximo jogador diz outra palavra que começa com a mesma letra que a palavra anterior terminou. Isso continua para sempre até que alguém desista! O truque é que você não pode usar a mesma palavra duas vezes (a menos que todos tenham esquecido que a palavra foi usada!). Geralmente brincamos com um determinado tópico para dificultar as coisas. Mas agora, quero que você faça um programa para fazer isso por mim.
Desafio
Escreva um programa ou função completa para encontrar todas as cadeias de palavras mais longas possíveis usando um determinado conjunto de palavras e inicie a palavra.
Isso é código-golfe , então o código mais curto vence!
Entrada
Existem duas entradas: uma lista e uma palavra inicial. A palavra inicial não estará na lista. As entradas são todas ASCII em minúsculas e a lista não conterá palavras duplicadas.
Resultado
Todas as sequências de palavras da lista, tais como:
A palavra inicial é a primeira palavra na sequência.
Cada palavra subsequente começa com a mesma letra que a última letra da palavra anterior.
O comprimento da sequência é o maior possível .
Se houver várias seqüências mais longas, produza todas elas.
A sequência não precisa necessariamente conter todas as palavras da lista. Às vezes isso não é possível (consulte casos de teste). Novamente, nenhuma palavra pode ser usada duas vezes!
Casos de teste
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]