Dados de letras são comuns em jogos de palavras. Pode ser divertido tentar soletrar palavras engraçadas com dados espantosos, por exemplo. Se você pegar um punhado de dados, é provável que não consiga soletrar certas palavras. Esse desafio é uma generalização dessa ideia.
Desafio
Dada uma lista de dados em que cada um tem pelo menos 1 face e uma palavra, sua tarefa é determinar se é possível soletrar essa palavra usando os dados fornecidos (nesse caso, ele deve retornar um resultado verdadeiro). Apenas uma letra de cada dado pode ser usada e um dado pode ser usado apenas uma vez. Você não precisa usar todos os dados dados.
Exemplos
Em um exemplo trivial, com os dados [[A], [C], [T]] e a string CAT, o resultado é verdadeiro. É claro que o BAT retornaria falso, pois não há dados com B neles
Se dado [[A, E, I, O, U], [A, B, C, T], [N, P, R]] como o conjunto de dados, você retornaria verdadeiro para ART, TON e CUR , mas falso para CAT, EAT e PAN, porque essas cadeias requerem reutilização de dados. Também deve ser bastante óbvio que o CRAB não pode ser escrito com esses dados, pois não há dados suficientes.
Se dado [[A, B, C], [A, E, I], [E, O, U], [L, N, R, S, T]] como o conjunto de dados, você poderá soletrar CAT, ABELHA, FEIJÃO, CHÁ, BETERRABA e BAN, mas você não seria capaz de soletrar LONE, CAB, BAIL, TAIL, BAA ou TON
Pode haver múltiplos do mesmo dado. Se dado [[A, B, C], [A, B, C], [A, B, C]], você seria capaz de escrever CAB, BAA, AAA, etc ... mas obviamente nada sem A, B ou C nele.
Regras
- Nenhuma exploração de brechas padrão
- Isso é código-golfe , então o código mais curto vence.
- Você pode assumir que palavras e dados serão compostos apenas por letras maiúsculas.
- Você pode assumir que a palavra sempre terá pelo menos uma letra e que sempre haverá pelo menos 1 dado.
- Você pode assumir que um dado nunca terá mais do que uma da mesma letra.
- A entrada e a saída podem estar em qualquer formato conveniente.