Esta pregunta se basa en una pregunta que hice en español . Sí, pedí un algoritmo en español. :)
En España, las placas actuales tienen este patrón:
1234 XYZ
donde XYZ son tres consonantes tomadas del conjunto completo de consonantes españolas (excepto el 'Ñ', creo).
A veces, cuando viajo con mi esposa, solemos jugar un juego. Cuando vemos una placa de matrícula, tomamos sus tres consonantes e intentamos formar una palabra que contenga esas tres consonantes, que aparecen en el mismo orden que en la placa de matrícula. Ejemplos (en español):
BCD
BoCaDo (valid)
CaBezaDa (not valid)
FTL
FaTaL (valid)
FLeTar (not valid)
FTR
FleTaR (valid, wins)
caFeTeRa (valid, loses)
El ganador es el que usa la menor cantidad de caracteres, como puede ver en el último ejemplo.
El reto
Escriba el programa o función más corta que reciba una lista de palabras y un conjunto de tres consonantes y encuentre la palabra más corta en la lista que contenga las tres consonantes en el mismo orden. Para los propósitos de este juego, el caso no importa.
- La entrada para la lista de palabras (primer parámetro) será una matriz de su
string
tipo de idioma . El segundo parámetro (las tres consonantes) será otrostring
. Si es mejor para su idioma, considerestring
el último elemento de la lista completa de parámetros con las tres consonantes. La salida será otrastring
. - Las palabras en la lista de palabras no serán inventadas o palabras infinitas, serán palabras que aparecen en cualquier diccionario estándar. Si necesita un límite, suponga que ninguna palabra en la lista de palabras tendrá más de 50 caracteres.
- Si hay varias palabras con la misma longitud que podrían ser la respuesta válida, puede devolver cualquiera de ellas. Solo asegúrese de devolver una sola palabra o una cadena vacía si ninguna palabra coincide con el patrón de tres consonantes.
- Puede repetir consonantes en el grupo, por lo que las entradas válidas para las tres consonantes son ambas
FLR
yGGG
. - Las consonantes españolas son exactamente las mismas que las inglesas, con la adición de "Ñ". Las vocales son las mismas con la adición de las vocales acentuadas: "áéíóúü". No habrá otro tipo de marcas como "-" o "'".
- Puede suponer que el caso siempre será el mismo tanto en la lista de palabras como en las tres consonantes.
Si desea probar su algoritmo con una colección real de palabras en español, puede descargar un archivo (15.9 MB) de Dropbox con más de un millón de palabras.
Casos de prueba
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 es el código de golf , ¡así que el programa más corto que me ayude a vencer a mi esposa siempre gana! :)