अगर आप Raspberry Pi से कुछ बनाना चाहते हैं, तो उसमें शायद आपको रेज़िस्टर चाहिए होंगे। इस अभ्यास के लिए आपको इनके बारे में दो बातें जाननी ज़रूरी हैं:
इस समस्या से बचने के लिए निर्माता रेज़िस्टरों पर रंगीन बैंड छापते हैं, जो उनकी रेज़िस्टेंस वैल्यू बताते हैं। हर बैंड की एक स्थिति और एक संख्या होती है।
रेज़िस्टर के पहले 2 बैंड के लिए एन्कोडिंग का एक सरल तरीका है: हर रंग एक ही संख्या दर्शाता है। उदाहरण के लिए, अगर उन पर पहले brown बैंड (वैल्यू 1) और उसके बाद green बैंड (वैल्यू 5) छापा जाए, तो इससे संख्या 15 बनती है।
इस अभ्यास में आप एक ऐसा उपयोगी प्रोग्राम बनाएँगे, जिससे आपको बैंडों की वैल्यू याद रखने की ज़रूरत नहीं पड़ेगी। यह प्रोग्राम इनपुट के रूप में रंगों के नाम लेगा और दो अंकों की संख्या देगा, चाहे इनपुट में दो से अधिक रंग क्यों न हों!
बैंड के रंगों का कोड इस प्रकार है:
ऊपर दिए उदाहरण से: brown-green को 15 लौटाना चाहिए, और brown-green-violet को भी 15 ही लौटाना चाहिए, तीसरे रंग को छोड़कर।
आपको यह फंक्शन बनाना है
value :: (Color, Color) -> Int
जो सिर्फ दो रंग लेता है और प्रतिरोधक के प्रतिरोध का संख्यात्मक वैल्यू वाला हिस्सा देता है।
बोनस - प्रॉपर्टी टेस्टिंग:
यह अभ्यास कुछ प्रॉपर्टी टेस्ट लिखने का अच्छा अवसर है। अगर आपने पहले कभी ऐसे टेस्ट नहीं लिखे हैं, तो यहाँ कुछ संसाधन हैं:
हमने टेस्ट फाइल में QuickCheck का एक नमूना प्रॉपर्टी टेस्ट दिया है।
ऐसी प्रॉपर्टी के उदाहरण जिनका टेस्ट किया जा सकता है:
हर (x, y) के लिए value (x, y) >= 10, जहाँ x Black नहीं है।
value (x, y) पर show कॉल करने पर वही स्ट्रिंग मिलती है, जो value (y, x) पर show कॉल करके उसे reverse करने पर मिलती है।
सभी रंगों के नाम अलग-अलग होते हैं। (किन्हीं भी दो रंगों के लिए, अगर रंग अलग हैं, तो उनके नाम भी अलग होते हैं।)
Exercism पर साइन अप कीजिए और Haskell को 107 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।