ट्रैक
/
Ruby
Ruby
/
अभ्यास
/
असेंबली लाइन
असेंबली लाइन

असेंबली लाइन

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

परिचय

संख्याएँ

Ruby में संख्याओं के दो सबसे आम प्रकार हैं:

  • पूर्णांक: ऐसी संख्याएँ जिनमें दशमलव चिह्न के बाद कोई अंक नहीं होता (पूर्ण संख्याएँ)। उदाहरण: -6, 0, 1, 25, 976 और 500000.
  • दशमलव संख्याएँ: ऐसी संख्याएँ जिनमें दशमलव चिह्न के बाद एक या अधिक अंक होते हैं। उदाहरण: -2.4, 0.1, 3.14, 16.984025 और 1024.0.

इन्हें Integer और Float क्लास के ज़रिए लागू किया जाता है।

इन क्लास में ऐसे मेथड हैं जो वैल्यू को एक टाइप से दूसरे में बदल देते हैं। Integer संख्याएँ पूरी इकाई तक सटीक होती हैं, जबकि Float की सटीकता पूर्ण संख्या के सापेक्ष भिन्नात्मक होती है:

  • Integer#to_f: एक नई दशमलव संख्या में बदल देता है
  • Float#ceil: निकटतम पूर्णांक तक ऊपर ले जाता है
  • Float#floor: निकटतम पूर्णांक तक नीचे ले जाता है
  • Float#round: निकटतम पूर्णांक देता है
  • Float#to_i: दशमलव भाग काटकर निकटतम पूर्णांक बनाता है

शर्तें

Ruby में ऐसे एक्सप्रेशन होते हैं जिन्हें फ्लो कंट्रोल एक्सप्रेशन कहते हैं। इनके ज़रिए तय होता है कि प्रोग्राम किस तरह चलेगा, और ये ट्रुथी या फाल्सी वैल्यू लेते हैं। कुछ ऑपरेटर ऐसे भी हैं जिनसे ट्रुथी या फाल्सी वैल्यू बनाई जा सकती है। इन्हें तुलना ऑपरेटर कहते हैं।

दो मुख्य कंट्रोल एक्सप्रेशन हैं जो यह तय करते हैं कि कौन-सा कोड चलेगा और कौन-सा नहीं। यानी ये तय करते हैं कि किस शाखा का कोड चलेगा।

ये दो हैं: if और unless एक्सप्रेशन।

तुलना ऑपरेटर

तुलना ऑपरेटर का इस्तेमाल वैल्यू की तुलना करने और true या false वैल्यू लौटाने के लिए किया जाता है। नीचे दिए गए ऑपरेटरों से तुलना करने के लिए दोनों वैल्यू एक ही टाइप की होनी चाहिए। अगर वैल्यू एक ही टाइप की न हों, तो कंपाइलर एक एरर देता है। यहाँ इन ऑपरेटरों की सूची दी गई है, साथ में एक उदाहरण कि ये कब true वैल्यू देते हैं:

मेथड विवरण उदाहरण
< से कम 4 < 5
<= से कम या बराबर 4 <= 4
> से अधिक 3 > 1
>= से अधिक या बराबर 2 >= 2

ऊपर बताए गए ऑपरेटरों के उलट, बराबर और बराबर नहीं वाले ऑपरेटरों से किसी भी टाइप की वैल्यू की तुलना की जा सकती है। == ऑपरेटर से यह जाँचा जाता है कि दो वैल्यू बराबर हैं या नहीं, और इसमें वैल्यू का टाइप भी जाँचा जाता है। != भी इसी तरह काम करता है, लेकिन यह true लौटाता है जब वैल्यू बराबर न हों, और false जब वे बराबर हों। यहाँ बराबर और बराबर नहीं वाले ऑपरेटरों की सूची दी गई है, साथ में एक उदाहरण कि ये कब true वैल्यू देते हैं:

मेथड विवरण उदाहरण
== बराबर 4 == 4
!= बराबर नहीं 5 != 4

if स्टेटमेंट

if स्टेटमेंट से यह जाँचा जाता है कि दी गई शर्त ट्रुथी है या फाल्सी। अगर शर्त ट्रुथी हो, तो if स्टेटमेंट के अंदर का कोड चलता है। if स्टेटमेंट end कीवर्ड पर खत्म होता है।

value = 1
if value == 1
  "1 is equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
end
# => nil

unless स्टेटमेंट

unless स्टेटमेंट if स्टेटमेंट की तरह ही काम करता है, लेकिन यह unless स्टेटमेंट के अंदर का कोड तब चलाता है जब शर्त फाल्सी हो।

value = 1
unless value == 1
  "1 is not equal to 1"
end
# => nil

unless value > 2
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

else स्टेटमेंट

else स्टेटमेंट का इस्तेमाल if स्टेटमेंट के साथ किया जा सकता है। else स्टेटमेंट तब चलता है जब if शाखा नहीं चलती।

value = 1
if value == 1
  "1 is equal to 1"
else
  "1 is not equal to 1"
end
# => "1 is equal to 1"

"श्रृंखलाबद्ध if" स्टेटमेंट

elsif स्टेटमेंट का इस्तेमाल if स्टेटमेंट के साथ किया जा सकता है। elsif स्टेटमेंट तब चलता है जब if शाखा न चले और elsif स्टेटमेंट की शर्त ट्रुथी हो। कई elsif स्टेटमेंट एक के बाद एक जोड़े जा सकते हैं, और सबसे पहली ट्रुथी शर्त वाला हिस्सा चलेगा। if स्टेटमेंट के अंत में एक else स्टेटमेंट भी हो सकता है, जो तब चलेगा जब पहले का कोई भी स्टेटमेंट सही न हुआ हो।

value = 1
if value != 1
  "1 is not equal to 1"
elsif value > 2
  "1 is greater than 2"
else
  "1 is not equal to 1 and 1 is not greater than 2"
end
# => "1 is not equal to 1 and 1 is not greater than 2"

निर्देश

इस अभ्यास में आप एक कार फैक्ट्री की असेंबली लाइन के उत्पादन का विश्लेषण करने के लिए कोड लिखेंगे। असेंबली लाइन की गति 0 (बंद) से 10 (अधिकतम) तक हो सकती है।

अपनी सबसे धीमी गति (1) पर यह हर घंटे 221 कारें बनाती है। गति बढ़ने के साथ उत्पादन रैखिक रूप से बढ़ता है। इसलिए गति 4 पर सेट होने पर यह हर घंटे 4 * 221 = 884 कारें बनानी चाहिए। लेकिन तेज़ गति पर खराब कारें बनने की संभावना बढ़ जाती है, और ऐसी कारों को फिर हटाना पड़ता है। आगे दी गई तालिका दिखाती है कि गति सफलता दर को कैसे प्रभावित करती है:

  • 1 से 4: 100% सफलता दर।
  • 5 से 8: 90% सफलता दर।
  • 9: 80% सफलता दर।
  • 10: 77% सफलता दर।

आपको दो काम करने हैं।

1. प्रति घंटा उत्पादन दर की गणना कीजिए

असेंबली लाइन की प्रति घंटा उत्पादन दर निकालने के लिए AssemblyLine#production_rate_per_hour मेथड को लागू कीजिए, और साथ में उसकी सफलता दर का भी ध्यान रखिए। ध्यान दीजिए कि लौटाई गई वैल्यू Float का एक इंस्टेंस होती है।

AssemblyLine.new(6).production_rate_per_hour
#=> 1193.4

2. प्रति मिनट बनने वाले काम करने वाले आइटम की संख्या की गणना कीजिए

यह गिनने के लिए कि हर मिनट कितनी पूरी बनी, काम करने वाली कारें तैयार होती हैं, AssemblyLine#working_items_per_minute मेथड को लागू कीजिए। ध्यान दीजिए कि लौटाई गई वैल्यू Integer का एक इंस्टेंस होती है।

AssemblyLine.new(6).working_items_per_minute
#=> 19
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Ruby Exercism

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

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