हीरा

हीरा

आसान

निर्देश

डायमंड काटा इनपुट के रूप में एक अक्षर लेता है और उसे हीरे के आकार में छापता है। कोई अक्षर दिया जाए, तो यह 'A' से शुरू होने वाला हीरा छापता है। इसमें दिया गया अक्षर सबसे चौड़े हिस्से पर होता है।

आवश्यकताएँ

  • पहली पंक्ति में एक 'A' होता है।
  • अंतिम पंक्ति में एक 'A' होता है।
  • पहली और अंतिम पंक्ति को छोड़कर बाकी सभी पंक्तियों में ठीक दो समान अक्षर होते हैं।
  • हर पंक्ति में जितने स्पेस शुरू में होते हैं, उतने ही स्पेस उसके अंत में भी होते हैं। (यह 0 भी हो सकता है।)
  • हीरा आड़ी दिशा में सममित होता है।
  • हीरा खड़ी दिशा में सममित होता है।
  • हीरे का आकार वर्ग जैसा होता है (चौड़ाई और ऊँचाई बराबर)।
  • अक्षर मिलकर हीरे का आकार बनाते हैं।
  • ऊपरी आधे हिस्से में अक्षर बढ़ते क्रम में होते हैं।
  • निचले आधे हिस्से में अक्षर घटते क्रम में होते हैं।
  • चारों कोने (जिनमें स्पेस होते हैं) त्रिभुज होते हैं।

उदाहरण

आगे के उदाहरणों में स्पेस को · अक्षरों से दिखाया गया है।

'A' अक्षर के लिए हीरा:

A

'C' अक्षर के लिए हीरा:

··A··
·B·B·
C···C
·B·B·
··A··

'E' अक्षर के लिए हीरा:

····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····

संकेत

आपको diamond फंक्शन बनाना है, जो हीरे जैसा आकार छापता है। यह आकार A से शुरू होता है और इसके सबसे चौड़े बिंदुओं पर दिया गया अक्षर आता है। अगर आपको टाइप के बारे में शंका हो, तो दिया गया सिग्नेचर इस्तेमाल कर सकते हैं, पर उसे अपनी रचनात्मकता सीमित करने न दें:

diamond :: Char -> Maybe [String]

यह अभ्यास टेक्स्ट डेटा के साथ काम करता है। ऐतिहासिक कारणों से Haskell का String टाइप [Char] के समान है, यानी अक्षरों का ऐरे। टेक्स्ट डेटा को और कुशलता से संभालने के लिए Text टाइप इस्तेमाल किया जा सकता है।

इस अभ्यास के वैकल्पिक विस्तार के तौर पर आप यह कर सकते हैं:

import qualified Data.Text as T
import           Data.Text (Text)
  • अब आप उदाहरण के लिए diamond :: Char -> Maybe [Text] लिख सकते हैं और Data.Text के कॉम्बिनेटरों को, जैसे T.pack, इस्तेमाल कर सकते हैं,
  • Data.Text का डॉक्युमेंटेशन देख लीजिए,
  • इसके बाद Diamond.hs में String की सभी जगहों पर Text लिख सकते हैं:
diamond :: Char -> Maybe [Text]

यह हिस्सा पूरी तरह वैकल्पिक है।


स्रोत

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

हीरा शुरू करने के लिए तैयार हैं?

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