ความท้าทายของคุณในวันนี้คือการใช้ฟังก์ชั่นที่เหมือน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
Javascript จะกลับมาundefined
ถ้าคุณไม่คืนสิ่งใดดังนั้นกฎนี้ - คุณไม่สามารถใช้หรือนำคำตอบของผู้อื่นมาใช้ซ้ำหรือคัดลอกการนำไปใช้ของฉัน
- คุณสามารถสันนิษฐานได้ว่าสำหรับ Javascript นั้นเบราว์เซอร์จะเปิดขึ้นแล้วและ
innerText
/ /textContent
ขององค์ประกอบอัตโนมัติจะถูกส่งผ่านเป็นพารามิเตอร์ตัวที่ 2 - สำหรับภาษาที่รวบรวมคุณไม่สามารถส่งผ่านอาร์กิวเมนต์พิเศษไปยังคอมไพเลอร์
- คุณสามารถรับชื่อไฟล์ผ่านข้อโต้แย้งของคอมไพเลอร์
- ตัวแปรมาโครตัวแปรโกลบอลค่าคงที่คลาสที่ไม่ได้มาตรฐานและการเรียงลำดับทั้งหมดที่ส่งผ่านค่าอื่น ๆ ภายในฟังก์ชั่นจะถือว่าไม่ถูกต้อง
- ใน Javascript ตัวแปรที่ไม่มีคำหลัก
var
ทำให้รหัสของคุณไม่ถูกต้อง - ฟังก์ชั่นของคุณจะถูกตั้งชื่อ
f
- คุณสามารถมีได้เพียง 2 ข้อโต้แย้งในฟังก์ชั่นของคุณ
- พยายามที่จะทำให้รหัสของคุณภายใต้ 500 วินาทีในการทำงาน
- คุณไม่ต้องกังวลกับช่องว่าง
- คุณต้องใช้อักขระที่พิมพ์ได้ASCIIเท่านั้น
จะมีการยกเว้นภาษาที่เพียงใช้ตัวอักษรที่ไม่พิมพ์ (APL และช่องว่าง 2 ตัวอย่าง)
เกณฑ์การให้คะแนน:
- จำนวนไบต์ต่ำสุดชนะ
- มีที่ไม่ถูกต้องASCIIตัวอักษรพิมพ์ในคำตอบของคุณจะนับเป็นคำตอบที่ถูกเข้ารหัสในUTF-32
ข้อยกเว้นการเข้ารหัสที่จะทำให้คำตอบของคุณจะนับจากตัวอักษร - เฉพาะส่วนของฟังก์ชั่นการนับเท่านั้นอย่านับสิ่งอื่นใดที่คุณทำภายนอก
- โบนัส -30% ถ้าคุณสร้างระบบการทำนายตามคำที่คุ้นเคยหรือคำที่พบบ่อยที่สุด
- โบนัสขนาด -20% หากคุณส่งคืนการแข่งขัน 5 ครั้งแรกสำหรับจดหมายแต่ละฉบับที่ตรงกับหมายเลขแรกเท่านั้น (เช่น: 245 จะส่งคืน 5 คำที่เริ่มต้นด้วย 'a', 5 เริ่มต้นด้วย 'b' และ 5 เริ่มต้นด้วย 'c' )
นี่คือตัวอย่างของการใช้งานโดยใช้ 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 "]
ตัวอย่างนี้ทดสอบและทำงานภายใต้ Opera 12.17 64bits บน Windows 7 Home Edition 64bits