ट्रैक
/
Haskell
Haskell
/
अभ्यास
/
प्रतिरोधक रंग तिकड़ी
प्रतिरोधक रंग तिकड़ी

प्रतिरोधक रंग तिकड़ी

आसान

निर्देश

अगर आप Raspberry Pi की मदद से कुछ बनाना चाहते हैं, तो आप शायद प्रतिरोधक इस्तेमाल करेंगे। इस अभ्यास के लिए आपको इनके बारे में सिर्फ तीन बातें जाननी हैं:

  • हर प्रतिरोधक की एक प्रतिरोध वैल्यू होती है।

  • प्रतिरोधक छोटे होते हैं, इतने छोटे कि अगर आप उन पर प्रतिरोध वैल्यू छाप दें, तो उसे पढ़ना मुश्किल हो जाएगा। इस समस्या से निपटने के लिए निर्माता प्रतिरोधकों पर रंगीन पट्टियाँ छापते हैं, और इन पट्टियों से उनकी प्रतिरोध वैल्यू पता चलती है।

  • हर पट्टी किसी संख्या के एक अंक की तरह काम करती है। उदाहरण के लिए, अगर वे brown रंग की पट्टी (वैल्यू 1) छापें और उसके बाद green रंग की पट्टी (वैल्यू 5), तो इसका मतलब संख्या 15 होगा। इस अभ्यास में आप एक काम का प्रोग्राम बनाएँगे, ताकि आपको पट्टियों की वैल्यू याद रखने की जरूरत न पड़े। यह प्रोग्राम 3 रंग इनपुट के रूप में लेता है और सही वैल्यू ohms में बताता है। इन रंगीन पट्टियों का कोड इस तरह है:

  • black: 0

  • brown: 1

  • red: 2

  • orange: 3

  • yellow: 4

  • green: 5

  • blue: 6

  • violet: 7

  • grey: 8

  • white: 9

प्रतिरोधक रंग जोड़ी वाले अभ्यास में आपने पहले दो रंगों को संख्या में बदला था। जैसे: orange-orange से मुख्य वैल्यू 33 मिलती थी। तीसरा रंग बताता है कि मुख्य वैल्यू में कितने शून्य जोड़ने हैं। मुख्य वैल्यू में इतने शून्य जोड़ने पर जो वैल्यू मिलती है, वह ohms में होती है। इस अभ्यास के लिए इससे कोई फर्क नहीं पड़ता कि ohms असल में क्या होते हैं। उदाहरण के लिए:

  • orange-orange-black का मतलब है 33, और कोई शून्य नहीं, यानी 33 ohms.
  • orange-orange-red का मतलब है 33, और 2 शून्य, यानी 3300 ohms.
  • orange-orange-orange का मतलब है 33, और 3 शून्य, यानी 33000 ohms.

(अगर गणित आपकी पसंद है, तो आप इन शून्यों को 10 की घात मान सकते हैं। अगर गणित आपकी पसंद नहीं है, तो शून्यों के साथ ही चलिए। दोनों बातें वास्तव में एक ही हैं, बस एक सीधी भाषा में कही गई है और दूसरी गणित की शब्दावली में।)

इस अभ्यास में आपको रंगों को एक लेबल में बदलना है:

"... ohms"

तो "orange", "orange", "black" इनपुट देने पर प्रोग्राम को यह लौटाना चाहिए:

"33 ohms"

जब प्रतिरोधक बड़े होते हैं, तो बड़े मान को दिखाने के लिए मीट्रिक उपसर्ग इस्तेमाल किया जाता है, जैसे "kiloohms"। यह वैसा ही है जैसे "2000 मीटर" कहने के बजाय "2 किलोमीटर" कहना, या "2000 ग्राम" के लिए "2 किलोग्राम" कहना।

उदाहरण के लिए, "orange", "orange", "orange" इनपुट देने पर प्रोग्राम को यह लौटाना चाहिए:

"33 kiloohms"

संकेत

आपको label और ohms फंक्शन बनाने हैं। label के लिए दिया गया सिग्नेचर इस्तेमाल कर सकते हैं, लेकिन उसे अपनी रचनात्मकता सीमित करने न दें।

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

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

  • Haskell में स्ट्रिंग टाइप के बारे में पढ़िए।

  • package.yaml में अपनी डिपेंडेंसी की सूची में - text जोड़िए।

  • Data.Text को इस तरीके से इंपोर्ट कीजिए:

    import qualified Data.Text as T
    import           Data.Text (Text)
    
  • अब आप उदाहरण के लिए label :: Resistor -> Text लिख सकते हैं और Data.Text के कॉम्बिनेटरों को T.pack जैसे नाम से पुकार सकते हैं।

  • Data.Text का डॉक्युमेंटेशन देखिए।

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

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

प्रतिरोधक रंग तिकड़ी शुरू करने के लिए तैयार हैं?

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