मेनू शॉर्टकट
परंपरागत रूप से, उपयोगकर्ता मेनू कीबोर्ड शॉर्टकट द्वारा सुलभ होते हैं, जैसे कि Alt + (a letter), या यहां तक कि पत्र को मारने पर भी जब सभी टेक्स्टबॉक्स अनफोकस्ड होते हैं ( जीमेल शैली)।
आपका कार्य
इनपुट के रूप में मेनू प्रविष्टियों को देखते हुए, आपका कार्य प्रत्येक मेनू प्रविष्टि को एक उचित शॉर्टकट पत्र प्रदान करना है।
एक फ़ंक्शन या एक प्रोग्राम लिखें जो शब्दों के एक सेट को स्वीकार करता है - मेनू प्रविष्टियों (तार की एक सरणी के रूप में, या आपकी भाषा के समतुल्य), और एक शब्दकोश, या एक हैशमैप, एक अक्षर से एक मेनू प्रविष्टि तक देता है।
आप या तो एक पैरामीटर का उपयोग कर सकते हैं और एक मान लौटा सकते हैं, या STDIN का उपयोग कर सकते हैं और अपने परिणामों को STDOUT में आउटपुट कर सकते हैं। आपको वैश्विक / स्कोप वैरिएबल मानने की अनुमति नहीं है जो पहले से ही इनपुट से आबाद है।
उचित पत्र निर्धारित करने के लिए एल्गोरिथ्म
- मूल रूप से यह शब्द का पहला उपलब्ध पत्र है। नीचे मान्यताओं और उदाहरण देखें।
- यदि सभी प्रवेश पत्र उपलब्ध नहीं हैं, तो शॉर्टकट होगा
(a letter) + (a number)। प्रविष्टि से आप जो पत्र चुनते हैं वह मनमाना है। संख्या 0 से शुरू होनी चाहिए और 1 से बढ़ाई जानी चाहिए - जैसे कि सभी शॉर्टकट अद्वितीय हैं। नीचे तीसरा उदाहरण देखें।
मान्यताओं
- इनपुट एक सेट होगा, यानी कोई पुनरावृत्ति नहीं, प्रत्येक प्रविष्टि अद्वितीय है।
- इनपुट की लंबाई किसी भी गैर-नकारात्मक पूर्णांक (आपकी भाषा के MAX_INT तक) हो सकती है।
- केस सेंसिटिविटी: इनपुट केस-सेंसिटिव है, (लेकिन केस को नजरअंदाज करते समय यूनिक रहेगा)। परिणामों में उनकी मूल आवरण वाली मूल प्रविष्टियाँ होनी चाहिए। हालाँकि, आउटपुट शॉर्टकट अक्षर केस-संवेदी नहीं होते हैं।
- सभी इनपुट शब्द संख्याओं के साथ समाप्त नहीं होंगे।
- कोई "दुष्ट इनपुट" परीक्षण नहीं किया जाएगा। "ईविल इनपुट" ऐसा है कि आपको 10 से अधिक बार एक निश्चित पत्र के काउंटर को बढ़ाना होगा।
उदाहरण
नीचे दिए गए उदाहरण JSON में हैं, लेकिन आप अपनी भाषा को एक सरणी और एक शब्दकोश के लिए बराबर उपयोग कर सकते हैं, या - यदि आप STD I / O का उपयोग कर रहे हैं - तो आपके इनपुट और आउटपुट के लिए कोई पठनीय प्रारूप (जैसे csv, या यहां तक कि अंतरिक्ष) अलग मूल्य)।
1।
Input: ['File', 'Edit', 'View', 'Help']
Output: {f:'File', e:'Edit', v:'View', h:'Help'}
2।
Input: ['Foo', 'Bar', 'FooBar', 'FooBars']
Output: {f:'Foo', b:'Bar', o:'FooBar', a:'FooBars'}
3।
Input: ['a', 'b', 'aa', 'bb', 'bbq', 'bbb', 'ba']
Output: {a:'a', b:'b', a0:'aa', b0:'bb', q:'bbq', b1:'bbb', b2:'ba'}
जीतने की स्थिति
सबसे छोटा कोड जीतता है। केवल ASCII की अनुमति है।
['ab', 'a']देना {a:'ab', a0:'a'}या {b:'ab', a:'a'}?