Esta pergunta é baseada em uma pergunta que fiz no idioma espanhol . Sim, solicitei um algoritmo no idioma espanhol. :)
Na Espanha, as matrículas atuais têm esse padrão:
1234 XYZ
onde XYZ são três consoantes retiradas do conjunto completo de consoantes espanholas (exceto a 'Ñ', eu acho).
Às vezes, quando viajamos com minha esposa, costumamos jogar um jogo. Quando vemos uma placa de carro, pegamos suas três consoantes e tentamos formar uma palavra que contenha essas três consoantes, aparecendo na mesma ordem que na placa de carro. Exemplos (em espanhol):
BCD
BoCaDo (valid)
CaBezaDa (not valid)
FTL
FaTaL (valid)
FLeTar (not valid)
FTR
FleTaR (valid, wins)
caFeTeRa (valid, loses)
O vencedor é aquele que usa o menor número de caracteres, como você pode ver no último exemplo.
O desafio
Escreva o programa ou a função mais curta que receba uma lista de palavras e um conjunto de três consoantes e encontre a palavra mais curta na lista que contém as três consoantes na mesma ordem. Para os propósitos deste jogo, o caso não importa.
- A entrada para a lista de palavras (primeiro parâmetro) será uma matriz do seu
string
tipo de idioma . O segundo parâmetro (as três consoantes) será outrostring
. Se for melhor para o seu idioma, considere ostring
com as três consoantes o último item de toda a lista de parâmetros. A saída será outrastring
. - As palavras na lista de palavras não serão inventadas ou serão infinitas; elas aparecerão em qualquer dicionário padrão. Se você precisar de um limite, suponha que nenhuma palavra na lista de palavras tenha mais de 50 caracteres.
- Se houver várias palavras com o mesmo comprimento que possam ser a resposta válida, você poderá retornar qualquer uma delas. Apenas certifique-se de retornar apenas uma palavra ou uma sequência vazia, se nenhuma palavra corresponder ao padrão de três consoantes.
- Você pode repetir consoantes no grupo, portanto, entradas válidas para as três consoantes são ambos
FLR
eGGG
. - As consoantes espanholas são exatamente as mesmas do inglês, com a adição do "Ñ". As vogais são as mesmas com a adição das vogais estressadas: "áéíóúü". Não haverá outro tipo de marca como "-" ou "'".
- Você pode supor que o caso será sempre o mesmo na lista de palavras e nas três consoantes.
Se você quiser testar seu algoritmo com uma coleção real de palavras em espanhol, poderá baixar um arquivo (15,9 MB) do Dropbox com mais de um milhão de palavras.
Casos de teste
Input: 'psr', {'hola' 'repasar' 'pasarais' 'de' 'caída' 'pequeñísimo' 'agüeros'}
Output: 'repasar'
Input: 'dsd', {'dedos' 'deseado' 'desde' 'sedado'}
Output: 'desde'
Input: 'hst', {'hastío' 'chest'}
Output: 'chest'
Este é o código-golfe , então o programa mais curto que me ajuda a vencer sempre a minha esposa vence! :)