La tua sfida oggi è implementare una funzionalità simile al t9 .
Implementerai una funzione che avrà solo 2 parametri.
Riceverai 1 numero di telefono in una stringa e il contenuto di un file di testo con un elenco di parole (non assumere uno stile di nuova riga specifico).
È possibile utilizzare il collegamento https://raw.githubusercontent.com/eneko/data-repository/master/data/words.txt per testare la funzionalità oppure utilizzare /usr/share/dict/words
(selezionare Un file di testo con un elenco di parole [chiuso] per ulteriori informazioni informazione).
Puoi presumere che riceverai sempre almeno 2 numeri.
Dato il numero, leggerai da un elenco di parole e restituirai le parole che iniziano con le lettere che si associano a quelle parole. Ciò significa che l'input dovrebbe essere solo numeri da 2 a 9.
Puoi fare tutto ciò che vuoi se ricevi input non validi.
Se non viene trovata alcuna corrispondenza, è possibile restituire un elenco vuoto, null
/ nil
o 0
.
Ricorda che i tasti del cellulare sono associati ai loro caratteri equivalenti:
- 0 e 1 non sono validi
- 2 corrispondenze [abc]
- 3 abbinati [def]
- 4 partite [ghi]
- 5 partite [jkl]
- 6 partite [mno]
- 7 corrispondenze [pqrs]
- 8 partite [tuv]
- e 9 partite [wxyz]
Esempi:
f('52726')
//returns ["Japan","japan","Japanee","Japanese","Japanesque"...,"larbowlines"]
f('552')
//returns ["Kjeldahl","kjeldahlization","kjeldahlize"...,"Lleu","Llew"]
f('1234')
//makes demons fly out your nose or divide by 0
f('9999')
//returns ["Zyzzogeton"]
f('999999')
//returns [] or null/nil or 0
Dopo aver eseguito la funzione, è possibile stamparla nel modo desiderato.
Regole:
- Le scappatoie standard sono NON VALIDE
- Devi restituire qualcosa, anche se è
null
/nil
Javascript restituiràundefined
se non restituisci qualcosa, quindi questa regola. - Non è possibile utilizzare o implementare nuovamente le risposte degli altri o copiare la mia implementazione.
- Si può presumere, per Javascript, che il browser sarà già aperto e che
innerText
/textContent
dell'elemento automatico verrà passato come secondo parametro - Per le lingue compilate, non è possibile passare argomenti speciali al compilatore
- È possibile ricevere il nome del file tramite argomenti del compilatore
- Variabili, macro, variabili globali, costanti, classi non standard e tutto l'ordinamento che passa altri valori all'interno della funzione saranno considerati non validi.
- In Javascript, le variabili senza la parola chiave
var
rendono il codice non valido - La tua funzione sarà nominata
f
- Puoi solo e avere solo 2 argomenti sulla tua funzione
- Cerca di mantenere il codice per meno di 500 secondi per l'esecuzione.
- Non devi preoccuparti di spazi bianchi
- È necessario utilizzare solo caratteri stampabili ASCII .
Le eccezioni sono le lingue che usano solo caratteri non stampabili (APL e spazi bianchi sono 2 esempi).
punteggio:
- Il numero più basso di byte vince
- Avere caratteri ASCII non validi nella tua risposta, verrà conteggiato come la risposta codificata in UTF-32
L'eccezione alla codifica farà sì che la tua risposta venga conteggiata dai caratteri . - Conta solo il corpo della funzione, non contare nient'altro che fai al di fuori di esso
- Bonus del -30% se crei un sistema di previsione basato sul vicinato o sulle parole più comuni
- Bonus di -20% in termini di dimensioni se si restituiscono solo le prime 5 corrispondenze per ogni lettera corrispondente al primo numero (ad esempio: 245 restituirà 5 parole che iniziano con 'a', 5 che iniziano con 'b' e 5 che iniziano con 'c' ).
Ecco un esempio di implementazione, usando Javascript:
function f(phone, words)
{
var keypad=['','','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz'];
var regex='';
for(var i=0,l=phone.length;i<l;i++)
{
regex+='['+keypad[phone[i]]+']';
}
var regexp=new RegExp('\\s('+regex+'[a-z]*)\\s','gi');
return words.match(regexp);
}
Per eseguirlo, aprire il collegamento dell'elenco ed eseguire, ad esempio:
f('9999',document.getElementsByTagName('pre')[0].innerText);
//returns [" Zyzzogeton "]
Questo esempio è stato testato e funziona con Opera 12.17 64 bit su Windows 7 Home Edition 64 bit.