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

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

मध्यम

निर्देश

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

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

इस समस्या से बचने के लिए निर्माता रेज़िस्टरों पर रंगीन बैंड छापते हैं, जो उनकी रेज़िस्टेंस वैल्यू बताते हैं। हर बैंड की एक स्थिति और एक संख्या होती है।

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

इस अभ्यास में आप एक ऐसा उपयोगी प्रोग्राम बनाएँगे, जिससे आपको बैंडों की वैल्यू याद रखने की ज़रूरत नहीं पड़ेगी। यह प्रोग्राम इनपुट के रूप में रंगों के नाम लेगा और दो अंकों की संख्या देगा, चाहे इनपुट में दो से अधिक रंग क्यों न हों!

बैंड के रंगों का कोड इस प्रकार है:

  • black: 0
  • brown: 1
  • red: 2
  • orange: 3
  • yellow: 4
  • green: 5
  • blue: 6
  • violet: 7
  • grey: 8
  • white: 9

ऊपर दिए उदाहरण से: brown-green को 15 लौटाना चाहिए, और brown-green-violet को भी 15 ही लौटाना चाहिए, तीसरे रंग को छोड़कर।

सिंटैक्स को परिभाषित करना

Caution

यह अभ्यास Resistor Color का आगे का हिस्सा है और उसी पर आधारित है। हालाँकि आप अभ्यास किसी भी क्रम में हल कर सकते हैं, हमारा सुझाव है कि आप दिए गए क्रम का पालन करें।

इस अभ्यास में रंगों के लिए पहले से परिभाषित सिंटैक्स दिया गया है, जो c* प्रीफिक्स का उपयोग करता है, जैसे c*black। इसके बाद आपको निर्देशों के अनुसार ऐसा सिंटैक्स परिभाषित करना है जो रंगों के क्रम को किसी संख्या से जोड़ता है। रंग *[[ और ]] के बीच होते हैं और , से अलग किए जाते हैं, जैसे *[[c*black, c*yellow, c*violet]]।

इस काम के लिए आपको संभवतः नोटेशन या मैक्रो का उपयोग करना पड़ेगा। आप चाहें तो संदर्भ देख सकते हैं।

चूँकि नए सिंटैक्स का विस्तार कंपाइल के समय ही हो जाता है, इसलिए जब तक सारा आवश्यक सिंटैक्स परिभाषित न हो, कोई भी टेस्ट कंपाइल नहीं हो पाएगा। इसी कारण हम पारंपरिक रनटाइम टेस्टों पर निर्भर रहने के बजाय #guard_msgs का उपयोग करते हैं। यह कमांड दिए गए डॉकस्ट्रिंग की तुलना किसी दूसरे कमांड से बने संदेश से करता है, इस मामले में #eval से, और अगर दोनों अलग हों तो एरर की सूचना देता है। एरर न आना भी टेस्ट पास होने के बराबर मान सकते हैं।

अगर आप अपने कंप्यूटर पर या Lean के ऑनलाइन प्लेग्राउंड में काम करते हैं, तो #guard_msgs जिस भी एरर की सूचना देगा, उसकी जानकारी आपको Lean InfoView में तुरंत मिल जाएगी।

Caution

ऑनलाइन टेस्ट रनर फिलहाल पूरी Lean मेटा-प्रोग्रामिंग लाइब्रेरी इम्पोर्ट करने का समर्थन नहीं करता। आप Lean में पहले से उपलब्ध किसी भी फीचर का उपयोग कर सकते हैं, जिनमें Lean नेमस्पेस के अंदर मौजूद फीचर भी शामिल हैं, लेकिन import Lean जोड़ने या Lean नेमस्पेस से कोई खास मॉड्यूल इम्पोर्ट करने पर Exercism पर सबमिट करते समय आपका सबमिशन फेल हो जाएगा।

ध्यान दीजिए कि इस अभ्यास को हल करने के लिए Lean लाइब्रेरी इम्पोर्ट करना आवश्यक नहीं है।

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

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

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