Questa domanda si basa su una domanda che ho posto in lingua spagnola . Sì, ho chiesto un algoritmo in lingua spagnola. :)
In Spagna, le attuali targhe hanno questo modello:
1234 XYZ
dove XYZ sono tre consonanti tratte dalla serie completa di consonanti spagnole (tranne "Ñ", credo).
A volte, quando viaggiamo con mia moglie, usiamo una partita. Quando vediamo una targa, prendiamo le sue tre consonanti e proviamo a formare una parola che contenga quelle tre consonanti, che appare nello stesso ordine della targa. Esempi (in spagnolo):
BCD
BoCaDo (valid)
CaBezaDa (not valid)
FTL
FaTaL (valid)
FLeTar (not valid)
FTR
FleTaR (valid, wins)
caFeTeRa (valid, loses)
Il vincitore è colui che utilizza il minor numero di personaggi, come puoi vedere nell'ultimo esempio.
La sfida
Scrivi il programma o la funzione più breve che riceve un elenco di parole e un insieme di tre consonanti e trova la parola più breve nell'elenco che contiene le tre consonanti nello stesso ordine. Ai fini di questo gioco, il caso non ha importanza.
- L'input per l'elenco di parole (primo parametro) sarà un array del tuo
string
tipo di lingua . Il secondo parametro (le tre consonanti) sarà un altrostring
. Se è meglio per la tua lingua, considerastring
con le tre consonanti l'ultimo elemento dell'intero elenco di parametri. L'output sarà un altrostring
. - Le parole nell'elenco delle parole non saranno inventate o infinite, saranno le parole che compaiono in qualsiasi dizionario standard. Se hai bisogno di un limite, supponi che nessuna parola nell'elenco di parole sia più lunga di 50 caratteri.
- Se ci sono più parole della stessa lunghezza che potrebbero essere la risposta valida, puoi restituire una qualsiasi di esse. Assicurati solo di restituire solo una parola o una stringa vuota se nessuna parola corrisponde allo schema di tre consonanti.
- Puoi ripetere le consonanti nel gruppo, quindi input validi per le tre consonanti sono entrambi
FLR
eGGG
. - Le consonanti spagnole sono esattamente le stesse dell'inglese, con l'aggiunta di "Ñ". Le vocali sono le stesse dell'adorazione delle vocali stressate: "áéíóúü". Non ci saranno altri tipi di segni come "-" o "'".
- Puoi supporre che il caso sarà sempre lo stesso sia nell'elenco delle parole che nelle tre consonanti.
Se vuoi testare il tuo algoritmo con una vera raccolta di parole spagnole, puoi scaricare un file (15,9 MB) da Dropbox con più di un milione di parole.
Casi test
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'
Questo è code-golf , quindi vince il programma più breve che mi aiuta a battere sempre mia moglie! :)