ट्रैक
/
Elixir
Elixir
/
अभ्यास
/
जर्मन सिसएडमिन
जर्मन सिसएडमिन

जर्मन सिसएडमिन

सीखने का अभ्यास

परिचय

चारलिस्ट

चारलिस्ट ~c सिगिल की मदद से बनाए जाते हैं।

~c"hello"
Note

ध्यान दीजिए कि Elixir के पुराने वर्शन में चारलिस्ट को सिंगल कोट्स के साथ 'hello' के रूप में दर्शाया जाता है।

हालाँकि ये स्ट्रिंग जैसे बहुत मिलते-जुलते दिखते हैं, लेकिन ये दोनों डेटा टाइप एक-दूसरे से काफी अलग होते हैं। एक चारलिस्ट पूर्णांकों की एक ऐरे होता है। ये पूर्णांक किसी दिए गए अक्षर की यूनिकोड वैल्यू दर्शाते हैं, जिन्हें कोड पॉइंट भी कहते हैं।

[65, 66, 67]
# => ~c"ABC"

किसी अक्षर से पहले ? लगाकर आप उसका कोड पॉइंट पा सकते हैं।

?A
# => 65

[?:, ?)]
# => ~c":)"

चूँकि चारलिस्ट ऐरे होते हैं, आप इनके साथ किसी भी अन्य ऐरे की तरह रिकर्शन और पैटर्न मैचिंग का इस्तेमाल करके काम कर सकते हैं।

[first_letter | _] = ~c"cat"
first_letter
# => 99

आप ++ की मदद से दो ऐरे जोड़ सकते हैं।

~c"hi" ++ ~c"!"
# => ~c"hi!"

पहला ऐरे जितना लंबा होगा, जोड़ना उतना ही धीमा होगा। इसलिए किसी भी लंबाई के ऐरे में बार-बार एलिमेंट जोड़ते रहने से बचिए।

case

case कंट्रोल फ्लो की एक संरचना है जो हमें किसी दी गई वैल्यू को कई पैटर्न से तुलना करने देती है। case एक्सप्रेशन के क्लॉज़ ऊपर से नीचे के क्रम में जाँचे जाते हैं, जब तक कोई मैच न मिल जाए।

age = 15

case age do
  0 -> ~c"infant"
  age when age < 4 -> ~c"baby"
  age when age < 13 -> ~c"child"
  age when age < 18 -> ~c"teenager"
  _ -> ~c"adult"
end

# => ~c"teenager"

निर्देश

आप जर्मनी के म्यूनिख शहर की एक बड़ी कंपनी में सिस्टम एडमिनिस्ट्रेटर के रूप में काम करते हैं। आपकी जिम्मेदारियों में से एक ईमेल अकाउंट का प्रबंधन है।

कई लोग शिकायत कर रहे हैं कि वे मिस्टर मुलर को ईमेल नहीं भेज पा रहे। आपको जल्द ही समझ आ जाता है कि कंपनी के ज़्यादातर लोग एक पुराना ईमेल क्लाइंट इस्तेमाल करते हैं, जो गैर-ASCII अक्षर की वजह से müller@firma.de को मान्य ईमेल पता नहीं मानता।

लोगों से यह कहना कि वे अपना पसंदीदा पुराना ईमेल क्लाइंट छोड़ दें, एक हारी हुई लड़ाई है, इसलिए आप तय करते हैं कि सभी ईमेल अकाउंट के लिए साफ किए गए उपनाम बनाए जाएँ।

1. छोटे अक्षरों के अलावा सब कुछ हटाकर मौजूदा यूज़रनेम साफ कीजिए

sanitize/1 फंक्शन बनाइए। यह एक यूज़रनेम को चारलिस्ट के रूप में लेता है और वह यूज़रनेम लौटाता है जिसमें छोटे अक्षरों के अलावा बाकी सभी अक्षर हटा दिए गए हैं।

Username.sanitize(~c"schmidt1985")
# => ~c"schmidt"

2. अंडरस्कोर की अनुमति दीजिए

sanitize/1 फंक्शन को बढ़ाइए। यह यूज़रनेम से अंडरस्कोर नहीं हटाता।

Username.sanitize(~c"mark_fischer$$$")
# => ~c"mark_fischer"

3. जर्मन अक्षरों की जगह ASCII विकल्प लगाइए

जर्मन वर्णमाला में 4 गैर-ASCII अक्षर हैं, और इन सभी के लिए आम तौर पर मान्यता प्राप्त ASCII विकल्प मौजूद हैं।

जर्मन अक्षर ASCII विकल्प
ä ae
ö oe
ü ue
ß ss

sanitize/1 फंक्शन को बढ़ाइए। यह जर्मन अक्षरों को तालिका के अनुसार बदल देता है। आप यह मान सकते हैं कि सभी यूज़रनेम पहले से ही लोअरकेस में हैं।

Username.sanitize(~c"cäcilie_weiß")
# => ~c"caecilie_weiss"
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Elixir Exercism

जर्मन सिसएडमिन शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Elixir को 58 कॉन्सेप्ट168 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।