Ihre heutige Herausforderung besteht darin, eine t9- ähnliche Funktionalität zu implementieren .
Sie implementieren eine Funktion, die nur 2 Parameter hat.
Sie erhalten 1 Telefonnummer in einer Zeichenfolge und den Inhalt einer Textdatei mit einer Liste von Wörtern (nehmen Sie keinen bestimmten Zeilenumbruchstil an).
Sie können den Link https://raw.githubusercontent.com/eneko/data-repository/master/data/words.txt verwenden , um die Funktionalität zu testen, oder verwenden Sie /usr/share/dict/words
(überprüfen Sie eine Textdatei mit einer Liste von Wörtern [geschlossen] für weitere Informationen Information).
Sie können davon ausgehen, dass Sie immer mindestens 2 Nummern erhalten.
Wenn Sie die Anzahl angeben, lesen Sie aus einer Liste von Wörtern und geben die Wörter zurück, beginnend mit den Buchstaben, die diesen Wörtern zugeordnet sind. Dies bedeutet, dass die Eingabe nur Zahlen von 2 bis 9 sein sollte.
Sie können tun, was Sie wollen, wenn Sie eine ungültige Eingabe erhalten.
Wenn keine Übereinstimmung gefunden wird, können Sie eine leere Liste zurückgeben, null
/ nil
oder 0
.
Denken Sie daran, dass die Handytasten den entsprechenden Zeichen zugeordnet sind:
- 0 und 1 sind ungültig
- 2 Treffer [abc]
- 3 übereinstimmend [def]
- 4 Spiele [ghi]
- 5 Treffer [jkl]
- 6 Treffer [mno]
- 7 Treffer [pqrs]
- 8 Spiele [tuv]
- und 9 Übereinstimmungen [wxyz]
Beispiele:
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
Nachdem Sie Ihre Funktion ausgeführt haben, können Sie sie nach Belieben drucken.
Regeln:
- Standardlücken sind UNGÜLTIG
- Sie müssen etwas zurückgeben, auch wenn es
null
/nil
Javascript zurückgibt,undefined
wenn Sie etwas nicht zurückgeben, daher diese Regel. - Sie können die Antworten anderer nicht verwenden oder erneut implementieren oder meine Implementierung kopieren.
- Sie können für Javascript davon ausgehen, dass der Browser bereits geöffnet ist und das
innerText
/textContent
des automatischen Elements als 2. Parameter übergeben wird - Für kompilierte Sprachen können Sie keine speziellen Argumente an den Compiler übergeben
- Sie können den Dateinamen über Compiler-Argumente erhalten
- Variablen, Makros, globale Variablen, Konstanten, nicht standardmäßige Klassen und alle Sortierungen, die andere Werte innerhalb der Funktion übergeben, werden als ungültig betrachtet.
- In Javascript machen Variablen ohne das Schlüsselwort
var
Ihren Code ungültig - Ihre Funktion wird benannt
f
- Sie können nur und nur 2 Argumente für Ihre Funktion haben
- Versuchen Sie, Ihren Code für die Ausführung unter 500 Sekunden zu halten.
- Sie müssen sich keine Gedanken über Leerzeichen machen
- Sie dürfen nur ASCII- druckbare Zeichen verwenden.
Ausnahmen sind Sprachen, die nur nicht druckbare Zeichen verwenden (APL und Leerzeichen sind zwei Beispiele).
Wertung:
- Die niedrigste Anzahl von Bytes gewinnt
- Wenn Ihre Antwort ungültige ASCII- druckbare Zeichen enthält, gilt dies als die Antwort, die in UTF-32
codiert wird. Die Ausnahme von der Codierung führt dazu, dass Ihre Antwort nach Zeichen gezählt wird . - Nur der Funktionskörper zählt, nichts anderes, was Sie außerhalb tun
- Bonus von -30%, wenn Sie ein Vorhersagesystem erstellen, das auf der Nachbarschaft oder den häufigsten Wörtern basiert
- Ein Bonus von -20%, wenn Sie nur die ersten 5 Übereinstimmungen für jeden Buchstaben zurückgeben, der der ersten Zahl entspricht (z. B.: 245 würde 5 Wörter zurückgeben, die mit 'a' beginnen, 5, die mit 'b' beginnen, und 5, die mit 'c beginnen'). ).
Hier ist ein Beispiel für eine Implementierung mit 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);
}
Öffnen Sie zum Ausführen den Listenlink und führen Sie beispielsweise Folgendes aus:
f('9999',document.getElementsByTagName('pre')[0].innerText);
//returns [" Zyzzogeton "]
Dieses Beispiel wurde getestet und funktioniert unter Opera 12.17 64-Bit unter Windows 7 Home Edition 64-Bit.