Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

रूबी के साथ गणित:मोडुलो ऑपरेटर, बाइनरी और अधिक

क्या आपको एक अच्छा प्रोग्रामर बनने के लिए गणित जानने की आवश्यकता है?

यह निर्भर करता है!

यदि आप पूरे दिन सीआरयूडी ऐप्स लिखने जा रहे हैं तो आपको शायद ज्यादा गणित जानने की जरूरत नहीं है, यदि कोई हो।

लेकिन अगर आप और दिलचस्प चीजें करना चाहते हैं, जैसे कोडिंग चुनौतियों को हल करना और कोडिंग इंटरव्यू के लिए तैयार रहना तो कुछ बुनियादी अवधारणाओं को सीखना मददगार है।

आज आप इसके बारे में जानने जा रहे हैं :

  • मॉड्यूलो ऑपरेटर (% )
  • नंबर सिस्टम
  • बिटमास्किंग

आप रूबी में इन अवधारणाओं को लागू करना सीखेंगे, इसलिए यह एक व्यावहारिक मार्गदर्शिका होगी।

चलो यह करते हैं!

रूबी मोडुलो ऑपरेटर

रूबी मोडुलो ऑपरेटर इस तरह दिखता है:

%

हाँ, बिल्कुल प्रतिशत चिह्न की तरह।

यह क्या करता है?

मॉड्यूलो ऑपरेटर आपको एक डिवीजन के शेष देता है . इसका उपयोग किसी संख्या के सम या विषम होने की जाँच करने जैसी चीज़ों के लिए किया जा सकता है।

हाँ।

रूबी में, हमारे पास even? . है /odd? तरीके।

उदाहरण :

8.even?
# true

5.even?
# false

लेकिन अगर आप यह जांचना चाहते हैं कि कोई संख्या 3 से विभाज्य है या नहीं, तो आपको मोडुलो ऑपरेटर का उपयोग करना होगा।

उदाहरण :

9 % 3 == 0
# true

आइए और अधिक उपयोगों के बारे में जानें!

मोडुलो ऑपरेटर के लिए व्यावहारिक उपयोग

आप मॉड्यूलो का उपयोग यह जांचने के लिए कर सकते हैं कि एक संख्या दूसरे से विभाज्य है या नहीं

एक संख्या विभाज्य होती है यदि शेष 0 है।

उदाहरण :

क्लासिक "FizzBuzz" कोडिंग चुनौती आपको यह पता लगाना चाहती है कि कोई संख्या 3 या 5 से विभाज्य है या नहीं।

if n % 3 == 0
  puts "Fizz"
end

if n % 5 == 0
  puts "Buzz"
end

आप modulo . का उपयोग कर सकते हैं हर नौवीं बार काम करने के लिए ऑपरेटर।

इसे पसंद करें :

(1..10).select { |n| n % 2 == 0 }
# [2, 4, 6, 8, 10]

या आप step . का उपयोग कर सकते हैं विधि:

(2..10).step(2).to_a
# [2, 4, 6, 8, 10]

दिवमॉड विधि का उपयोग करना

मोडुलो ऑपरेटर के लिए एक अन्य उपयोग मिनटों को घंटों + शेष मिनटों में बदलना है।

उदाहरण :

हमारे पास 90 मिनट हैं, जो 1 घंटे और 30 मिनट के बराबर है।

hours, minutes = 90.divmod(60)
# [1, 30]

divmod पर ध्यान दें विधि:

यह एक ही समय में विभाजन और मॉड्यूल (शेष भाग) करता है।

बहुत मददगार!

नंबर सिस्टम को समझना

संख्या प्रणाली संख्याओं का प्रतिनिधित्व करने का एक तरीका है।

संख्याओं के अपने दैनिक उपयोग में आप दशमलव प्रणाली . का उपयोग करते हैं ।

0123456789

एक संख्या प्रणाली संख्याओं और कभी-कभी वर्णों के समूह से बनी होती है।

उदाहरण के लिए :

हेक्साडेसिमल प्रणाली कुल 16 प्रतीकों का उपयोग करती है।

0123456789abcdef

यहां सामान्य अंकीय प्रणालियों की तालिका दी गई है :

<वें संरेखित करें="बाएं">प्रतीक
Name प्रतीक गणना
हेक्साडेसिमल 16 0123456789abcdef
दशमलव 10 0123456789
Octal 8 01234567
बाइनरी 2 01

आप रूबी में नंबर सिस्टम के बीच to_s . के साथ कनवर्ट कर सकते हैं विधि।

दशमलव . से रूपांतरित करने का तरीका यहां दिया गया है (9 ) से बाइनरी (1001 ):

9.to_s(2)
# "1001"

आप to_i . का उपयोग कर सकते हैं एक स्ट्रिंग पर वापस एक पूर्णांक में बदलने के लिए विधि।

तो अगर आप हेक्साडेसिमल . से जाना चाहते हैं (ff ) से दशमलव (255 ) आप यह कर सकते हैं:

"ff".to_i(16)
# 255

जहां 16 संख्या के लिए "प्रतीक गणना" या आधार है।

बिटमास्किंग क्या है?

आप शायद हर दिन यह सोचकर नहीं उठते…

"अरे! मुझे बहुत सारे बूलियन मान पैक करने की आवश्यकता है जितना हो सके कम जगह में।”

लेकिन अगर किसी दिन आपको ऐसा करने की आवश्यकता हो...

एक बेहतरीन तकनीक जो आपकी मदद कर सकती है वह है "बिटमास्किंग"।

बिटमास्किंग के साथ, आप बहुत सारे बूलियन मानों को एक पूर्णांक मान में पैक कर सकते हैं।

यह कैसे संभव है?

व्यक्तिगत बिट्स का उपयोग करके जिससे नंबर बना है।

चूंकि एक बूलियन मान को एक बिट द्वारा दर्शाया जा सकता है, और एक पूर्णांक मान में 64 बिट होते हैं, हम एक ही संख्या में 64 बूलियन मानों को पैक कर सकते हैं।

हम बिटवाइज़ ऑपरेटरों का उपयोग करने जा रहे हैं।

यहां एक तालिका है :

Name प्रतीक इस्तेमाल करें
XOR (Exclusive OR) ^ बिट टॉगल करें
और & बिट चेक करें
नहीं ~ बिट साफ़ करें
या | बिट सेट करें

बिटवाइज़ ऑपरेटर्स बीआईटी स्तर पर काम करते हैं और ठीक यही हम चाहते हैं।

यहां एक कोड उदाहरण दिया गया है :

class Bitmask
  def initialize
    @value = 0
  end

  def set(bit)
    @value |= bit
  end

  def clear(bit)
    @value &= ~bit
  end

  def check(bit)
    (@value & bit) == bit
  end

  def to_binary
    @value.to_s(2)
  end
end

bit = Bitmask.new

बिटमास्किंग का उपयोग कैसे करें

अब आप set . का उपयोग कर सकते हैं , clear &check इस डेटा संरचना के साथ काम करने के तरीके। आप प्रत्येक मान का अर्थ बताने के लिए स्थिरांक को परिभाषित करना भी चाह सकते हैं।

उदाहरण :

class Bitmask
  ENGINES_ENABLED = 1
  CAPTAIN_ABOARD  = 2
  SHIELDS_UP      = 4

  # ... rest of code here
end

bit = Bitmask.new

bit.set(Bitmask::ENGINES_ENABLED)
bit.check(Bitmask::ENGINES_ENABLED)

set . के लिए मान्य मान 1 और 2 की शक्तियां (2,4,8,16,32…) शामिल करें, यह अन्य बिट्स को ओवरराइट करने से बचाती है।

रूबी के साथ गणित:मोडुलो ऑपरेटर, बाइनरी और अधिक

यदि हमारे पास 64 + 32 + 1 है, तो संग्रहीत मूल्य इस तरह दिखेगा:

1100001

रूबी गणित के तरीके

रूबी में कुछ अंतर्निहित गणित विधियां शामिल हैं जो सहायक हो सकती हैं।

हमने पहले ही divmod . को कवर कर लिया है , even? &odd?

अन्य विधियों में शामिल हैं :

  • ** / pow (घातांक)
  • gcd (सबसे बड़ा सामान्य भाजक)
  • abs (पूर्ण मान, ऋणात्मक चिह्न हटाता है)
  • round (निकटतम पूर्णांक के चारों ओर)
  • floor &ceil (राउंड डाउन / राउंड अप)
  • Math.sqrt(n) (n का वर्गमूल)
  • Math.log2(n) (एन का लॉग 2)
  • digits (पूर्णांक को अंकों के उल्टे सरणी में बदलता है)

उदाहरण :

5 ** 2
# 25

-10.abs
# 10

300.digits
# [0, 0, 3]

रूबी वीडियो में गणित

सारांश

आपने कुछ दिलचस्प गणित के गुर सीखे हैं, जैसे मॉड्यूलो का उपयोग करना % एक विभाजन के शेष का पता लगाने के लिए। आप शेष का उपयोग यह जांचने के लिए कर सकते हैं कि कोई संख्या किसी अन्य संख्या से विभाज्य है या नहीं।

आपने नंबर सिस्टम, बिटमास्किंग और बिटवाइज़ ऑपरेटरों के बारे में भी सीखा है।

इस पोस्ट को शेयर करना न भूलें...

और यदि आपने अभी तक RubyGuides न्यूज़लेटर की सदस्यता नहीं ली है तो!


  1. टीसीमॉलोक के साथ रूबी की मेमोरी आवंटन की रूपरेखा

    रूबी में मेमोरी आवंटन कैसे काम करता है? रूबी को मेमोरी टुकड़ों में मिलती है, जिन्हें पेज कहा जाता है, यहां नई वस्तुएं सहेजी जाती हैं। फिर… जब ये पृष्ठ भर जाते हैं, तो अधिक स्मृति की आवश्यकता होती है। रूबी ऑपरेटिंग सिस्टम से malloc . के साथ अधिक मेमोरी का अनुरोध करती है समारोह। यह malloc फ़ंक्श

  1. रूबी के साथ एक पार्सर कैसे बनाएं

    पार्सिंग स्ट्रिंग्स के एक गुच्छा को समझने और उन्हें किसी ऐसी चीज़ में बदलने की कला है जिसे हम समझ सकते हैं। आप रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं, लेकिन वे हमेशा कार्य के लिए उपयुक्त नहीं होते हैं। उदाहरण के लिए, यह सामान्य ज्ञान है कि नियमित अभिव्यक्तियों के साथ HTML को पार्स करना शायद एक अच्छ

  1. रूबी स्ट्रिंग स्वरूपण

    आइए बात करते हैं कि आप रूबी में स्ट्रिंग्स को कैसे प्रारूपित कर सकते हैं। आप एक स्ट्रिंग को प्रारूपित क्यों करना चाहेंगे? ठीक है, हो सकता है कि आप ऐसे काम करना चाहें जैसे संख्या 10 से कम हो (उदाहरण:01, 02, 03…), या कुछ कंसोल आउटपुट कॉलम में अच्छी तरह से स्वरूपित हो। अन्य भाषाओं में आप printf . का