क्या आपको एक अच्छा प्रोग्रामर बनने के लिए गणित जानने की आवश्यकता है?
यह निर्भर करता है!
यदि आप पूरे दिन सीआरयूडी ऐप्स लिखने जा रहे हैं तो आपको शायद ज्यादा गणित जानने की जरूरत नहीं है, यदि कोई हो।
लेकिन अगर आप और दिलचस्प चीजें करना चाहते हैं, जैसे कोडिंग चुनौतियों को हल करना और कोडिंग इंटरव्यू के लिए तैयार रहना तो कुछ बुनियादी अवधारणाओं को सीखना मददगार है।
आज आप इसके बारे में जानने जा रहे हैं :
- मॉड्यूलो ऑपरेटर (
%
) - नंबर सिस्टम
- बिटमास्किंग
आप रूबी में इन अवधारणाओं को लागू करना सीखेंगे, इसलिए यह एक व्यावहारिक मार्गदर्शिका होगी।
चलो यह करते हैं!
रूबी मोडुलो ऑपरेटर
रूबी मोडुलो ऑपरेटर इस तरह दिखता है:
%
हाँ, बिल्कुल प्रतिशत चिह्न की तरह।
यह क्या करता है?
मॉड्यूलो ऑपरेटर आपको एक डिवीजन के शेष देता है . इसका उपयोग किसी संख्या के सम या विषम होने की जाँच करने जैसी चीज़ों के लिए किया जा सकता है।
हाँ।
रूबी में, हमारे पास 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 न्यूज़लेटर की सदस्यता नहीं ली है तो!