ट्रैक
/
Common Lisp
Common Lisp
/
अभ्यास
/
अक्षरों का अध्ययन
अक्षरों का अध्ययन

अक्षरों का अध्ययन

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

परिचय

अक्षर

Common Lisp में भी दूसरी प्रोग्रामिंग भाषाओं की तरह अक्षर होते हैं। अक्षर ऐसे ऑब्जेक्ट होते हैं जो टेक्स्ट (जैसे स्ट्रिंग या टेक्स्ट स्ट्रीम) में एक इकाई को दर्शाते हैं।

अक्षरों को पूर्णांकों में और पूर्णांकों से अक्षरों में बदला जा सकता है। (लेकिन वे पूर्णांक नहीं हैं, वे एक अलग डेटा टाइप हैं।)

किसी अक्षर को #\ और उसके बाद उसका नाम लिखकर दर्शाया जाता है। आम अक्षरों, जैसे 'A' या 'b' या '9' या '!', का 'नाम' बस वही होता है: इसलिए #\A, #\b, #\9 और #\!. कुछ गैर-ग्राफिकल अक्षरों, जैसे स्पेस या न्यूलाइन, के नाम #\Space और #\Newline जैसे होते हैं।

मानक के अनुसार किसी इम्प्लीमेंटेशन में कम से कम 96 अक्षर होने चाहिए (अपरकेस और लोअरकेस लैटिन वर्णमाला अक्षर (A-Za-z), अंक (0-9), स्पेस (#\Space), न्यूलाइन (#\Newline) और विराम चिह्न (जैसे !$"'(),_-./:;?+<=>#%&*@[\]{|}`^~) लेकिन ज़्यादातर इम्प्लीमेंटेशन इससे अधिक देते हैं, कुछ तो सभी यूनिकोड अक्षर भी देते हैं।

अक्षरों की तुलना

अक्षरों की बराबरी के लिए char= या char-equal से तुलना की जा सकती है (बाद वाला केस-असंवेदनशील होता है)।

अक्षरों को char<, char>, char<=, char>= जैसे फंक्शनों और उनके केस-असंवेदनशील रूपों char-lessp और char-greaterp की मदद से क्रम में लगाया जा सकता है।

अक्षरों के प्रकार

अक्षरों को अलग-अलग प्रकारों में बाँटा जा सकता है: ग्राफिकल, अल्फाबेटिक, अल्फान्यूमेरिक, अंक, अपरकेस या लोअरकेस। एक अक्षर एक से अधिक प्रकार का हो सकता है, जैसे अपरकेस अल्फाबेटिक अक्षर। इनमें से हर प्रकार के लिए प्रेडिकेट होते हैं: graphic-char-p, alpha-char-p, alphanumericp, digit-char-p, upper-case-p और lower-case-p.

अक्षर का केस बदलना

कुछ अक्षर अपरकेस या लोअरकेस हो सकते हैं और char-upcase तथा char-downcase की मदद से उनके बीच बदले जा सकते हैं।

निर्देश

लुईस एक युवा Lisp Alien है। उसे अपने मानव वर्णमाला प्रोजेक्ट पर कुछ काम पूरा करना है, और वह पूछता है कि क्या आप कुछ ऐसे फंक्शन प्रोग्राम करने में उसकी मदद कर सकते हैं, जिनकी उसे ज़रूरत पड़ेगी।

1. अक्षरों की तुलना

लुईस को दो अक्षरों की तुलना करने के लिए एक फंक्शन चाहिए, जो यह तय करे कि पहला अक्षर दूसरे से बड़ा है, छोटा है या उसके बराबर। एक फंक्शन compare-chars लिखिए, जो दो अक्षर लेगा और तुलना के आधार पर :greater-than, :less-than या :equal-to लौटाएगा। फंक्शन की तुलना केस-सेंसिटिव होनी चाहिए।

2. अक्षर का "आकार" तय कीजिए

लुईस को यह जानना है कि कोई अक्षर "बड़ा" (यानी अपरकेस अक्षर) है, "छोटा" (यानी लोअरकेस अक्षर) है, या इनमें से कोई नहीं होने पर "बिना आकार" है। एक फंक्शन size-of-char लिखिए, जो अक्षर के "आकार" के अनुसार :big, :small या :no-size लौटाएगा:

3. अक्षर का "आकार" बदलिए

लुईस को कभी किसी बड़े अक्षर को छोटा बनाना पड़ सकता है, या किसी छोटे अक्षर को बड़ा। एक फंक्शन change-size-of-char लिखिए, जो दो पैरामीटर लेता है: एक अक्षर और मनचाहा आकार (:big या :small)। इसे उसी अक्षर का सही आकार वाला रूप लौटाना चाहिए।

4. अक्षर का "प्रकार" तय कीजिए

लुईस को न सिर्फ अक्षर का 'आकार' जानना होगा, बल्कि उसका 'प्रकार' भी। एक फंक्शन type-of-char लिखिए। अगर अक्षर वर्णमाला का अक्षर है तो यह :alpha लौटाएगा, अगर संख्या का अक्षर है तो :numeric, अगर स्पेस अक्षर है तो :space, अगर नई लाइन वाला अक्षर है तो :newline, और बाकी किसी भी स्थिति में :unknown.

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Common Lisp Exercism

अक्षरों का अध्ययन शुरू करने के लिए तैयार हैं?

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