오늘날의 과제는 t9 와 유사한 기능 을 구현하는 것입니다.
2 개의 매개 변수 만있는 함수를 구현합니다.
문자열로 된 전화 번호 1 개와 단어 목록이 포함 된 텍스트 파일의 내용을받습니다 (특정 줄 바꿈 스타일을 가정하지 않음). https://raw.githubusercontent.com/eneko/data-repository/master/data/words.txt
링크를 사용하여 기능을 테스트하거나 다음을 사용하십시오 ( 자세한 내용은 [닫힌] 단어 목록이있는 텍스트 파일 확인) . 정보)./usr/share/dict/words
항상 최소 2 개의 숫자를받을 것이라고 가정 할 수 있습니다.
숫자가 주어지면 단어 목록에서 읽고 해당 단어에 해당하는 문자로 시작하는 단어를 반환합니다. 이것은 입력이 2에서 9까지의 숫자 만되어야한다는 것을 의미합니다
. 유효하지 않은 입력을 받으면 원하는대로 할 수 있습니다.
일치하는 항목이없는 경우 빈 목록을 반환 할 수 있습니다 null
/ nil
또는 0
.
휴대폰 키는 해당 문자에 매핑됩니다.
- 0과 1은 유효하지 않습니다
- 2 개 일치 [abc]
- 3 개 일치 [def]
- 4 건 [ghi]
- 5 경기 [jkl]
- 6 건 [mno]
- 7 건 [pqrs]
- 8 일치 [tuv]
- 9 개 일치 [wxyz]
예 :
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
기능을 실행 한 후 원하는 방식으로 인쇄 할 수 있습니다.
규칙 :
- 표준 허점은 유효하지 않습니다
- 무언가
를 반환 하지 않으면 무언가를 반환 해야합니다
null
/ 무언가를 반환하지 않으면nil
자바 스크립트가 반환 되므로이undefined
규칙. - 다른 답변을 사용하거나 다시 구현하거나 구현 내용을 복사 할 수 없습니다.
- Javascript의 경우 브라우저가 이미 열려 있고 자동 요소 의
innerText
/textContent
가 두 번째 매개 변수로 전달 된다고 가정 할 수 있습니다. - 컴파일 된 언어의 경우 컴파일러에 특수 인수를 전달할 수 없습니다
- 컴파일러 인수를 통해 파일 이름을받을 수 있습니다
- 변수, 매크로, 전역 변수, 상수, 비표준 클래스 및 함수 내부의 다른 값을 전달하는 모든 정렬은 유효하지 않은 것으로 간주됩니다.
- 자바 스크립트에서 키워드가없는 변수는
var
코드를 무효화합니다. - 당신의 기능은 명명 될 것입니다
f
- 함수에는 오직 2 개의 인수 만 가질 수 있습니다
- 코드를 500 초 미만으로 유지하십시오.
- 공백에 대해 걱정할 필요가 없습니다.
- ASCII 인쇄 가능 문자 만 사용해야합니다 . 인쇄 할 수없는 문자 만 사용
하는 언어는 예외입니다 (APL 및 공백은 2 가지 예입니다).
채점 :
- 가장 적은 바이트 수의 승리
- 답변에 유효하지 않은 ASCII 인쇄 가능 문자가 있으면 UTF-32 로 인코딩 된
답변으로 계산됩니다 . 인코딩의 예외는 답변을 문자 로 계산 합니다 . - 함수 본문 만 계산하고 그 밖의 다른 작업은 계산하지 않습니다
- 주변 또는 가장 일반적인 단어를 기반으로 예측 시스템을 만드는 경우 -30 %의 보너스
- 첫 번째 숫자에 해당하는 각 문자에 대해 처음 5 개의 일치 항목 만 반환하면 크기가 -20 % 증가합니다 (예 : 245는 'a'로 시작하는 5 단어, 'b'로 시작하는 5 단어, 'c'로 시작하는 5 단어를 반환 함) ).
다음은 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);
}
이를 실행하려면 목록 링크를 열고 다음과 같이 실행하십시오.
f('9999',document.getElementsByTagName('pre')[0].innerText);
//returns [" Zyzzogeton "]
이 예제는 Windows 7 Home Edition 64 비트의 Opera 12.17 64 비트에서 테스트되었으며 작동합니다.