आपकी चुनौती आज एक 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 मैच [एबीसी]
- 3 मिलान [पराजित]
- 4 मैच [घी]
- 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
अपना फ़ंक्शन चलाने के बाद, आप इसे अपनी इच्छानुसार किसी भी तरीके से प्रिंट कर सकते हैं।
नियम:
- मानक कमियां INVALID हैं
- आपको कुछ वापस करना होगा, भले ही यह
null
/nil
जावास्क्रिप्ट होundefined
अगर आप कुछ नहीं लौटाएंगे, तो यह नियम। - आप दूसरे के उत्तरों का उपयोग या पुन: कार्यान्वयन नहीं कर सकते या मेरे कार्यान्वयन की प्रतिलिपि नहीं बना सकते।
- आप जावास्क्रिप्ट के लिए मान सकते हैं, कि ब्राउज़र पहले से ही खुला होगा और ऑटोमैटिक एलिमेंट को
innerText
/textContent
2 पैरामीटर के रूप में पास किया जाएगा। - संकलित भाषाओं के लिए, आप संकलक को विशेष तर्क नहीं दे सकते
- आप कंपाइलर तर्कों पर फ़ाइल का नाम प्राप्त कर सकते हैं
- चर, मैक्रोज़, वैश्विक चर, स्थिरांक, गैर-मानक कक्षाएं और फ़ंक्शन के अंदर सभी प्रकार के अन्य मानों को अमान्य माना जाएगा।
- जावास्क्रिप्ट में, बिना कीवर्ड के चर
var
आपके कोड को अमान्य कर देते हैं - आपके फंक्शन का नाम होगा
f
- आप अपने कार्य पर केवल और केवल 2 तर्क दे सकते हैं
- अपने कोड को चलाने के लिए 500 सेकंड से कम रखने की कोशिश करें।
- आपको व्हाट्सएप के बारे में चिंता करने की जरूरत नहीं है
- आपको केवल ASCII प्रिंट करने योग्य वर्णों का उपयोग करना चाहिए ।
अपवाद ऐसी भाषाएं हैं जो केवल गैर-मुद्रण योग्य वर्णों का उपयोग करती हैं (एपीएल और व्हाट्सएप 2 उदाहरण हैं)।
स्कोरिंग:
- सबसे कम संख्या में बाइट्स जीतते हैं
- आपके उत्तर में अमान्य ASCII प्रिंट करने योग्य वर्ण होने के बाद , उत्तर को UTF-32
में एन्कोड किया जाएगा क्योंकि एन्कोडिंग का अपवाद आपके उत्तर को वर्णों द्वारा गिना जाएगा । - केवल फ़ंक्शन बॉडी मायने रखता है, इसके बाहर आप जो कुछ भी करते हैं उसे गिनें नहीं
- -30% का बोनस यदि आप पड़ोस या सबसे सामान्य शब्दों के आधार पर एक भविष्यवाणी प्रणाली बनाते हैं
- आकार में -20% का बोनस यदि आप प्रत्येक अक्षर के लिए पहले नंबर के अनुरूप पहले 5 मैच लौटाते हैं (उदाहरण: 245 में 5 शब्द 'ए' से शुरू होते हैं, 5 'बी' से शुरू होते हैं और 5 'सी' से शुरू होते हैं। )।
यहाँ जावास्क्रिप्ट का उपयोग करते हुए एक कार्यान्वयन का एक उदाहरण है:
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 "]
इस उदाहरण का परीक्षण किया गया था और विंडोज 7 होम संस्करण 64 बिट्स पर ओपेरा 12.17 64 बिट्स के तहत काम करता है।