কম্পিউটার

রুবির সাথে গণিত:মডুলো অপারেটর, বাইনারি এবং আরও অনেক কিছু

একজন ভালো প্রোগ্রামার হওয়ার জন্য আপনার কি গণিত জানতে হবে?

এটা নির্ভর করে!

আপনি যদি সারাদিন শুধু CRUD অ্যাপস লিখতে থাকেন তাহলে সম্ভবত আপনার বেশি গণিত জানার দরকার নেই, যদি থাকে।

তবে আপনি যদি আরও আকর্ষণীয় জিনিস করতে চান, যেমন কোডিং চ্যালেঞ্জগুলি সমাধান করা এবং কোডিং ইন্টারভিউয়ের জন্য প্রস্তুত হন তাহলে কয়েকটি মৌলিক ধারণা শেখা সহায়ক৷

আজ আপনি শিখতে যাচ্ছেন :

  • মডুলো অপারেটর (% )
  • সংখ্যা ব্যবস্থা
  • বিটমাস্কিং

আপনি রুবিতে এই ধারণাগুলি কীভাবে প্রয়োগ করবেন তা শিখবেন, তাই এটি একটি ব্যবহারিক নির্দেশিকা হতে চলেছে৷

এটা করা যাক!

রুবি মডুলো অপারেটর

রুবি মডুলো অপারেটর দেখতে এইরকম:

%

হ্যাঁ, শতকরা চিহ্নের মতো।

এটা কি করে?

মডুলো অপারেটর আপনাকে একটি বিভাগের অবশিষ্ট অংশ দেয় . এটি একটি সংখ্যা জোড় বা বিজোড় কিনা তা পরীক্ষা করার মতো জিনিসগুলির জন্য ব্যবহার করা যেতে পারে৷

হ্যাঁ৷

রুবিতে, আমাদের even? আছে /odd? পদ্ধতি।

উদাহরণ :

8.even?# true5.even?# false

কিন্তু আপনি যদি একটি সংখ্যা 3 দ্বারা বিভাজ্য কিনা তা পরীক্ষা করতে চান, তাহলে আপনাকে মডুলো অপারেটর ব্যবহার করতে হবে।

উদাহরণ :

9 % 3 ==0# সত্য

আসুন আরও ব্যবহারগুলি অন্বেষণ করি!

মডুলো অপারেটরের জন্য ব্যবহারিক ব্যবহার

একটি সংখ্যা অন্য দ্বারা বিভাজ্য কিনা তা পরীক্ষা করতে আপনি মডিউল ব্যবহার করতে পারেন .

একটি সংখ্যা বিভাজ্য যদি অবশিষ্ট 0 হয়।

উদাহরণ :

ক্লাসিক "FizzBuzz" কোডিং চ্যালেঞ্জ আপনাকে একটি সংখ্যা 3 বা 5 দ্বারা বিভাজ্য কিনা তা খুঁজে বের করতে চায়৷

যদি n % 3 ==0 "Fizz" এন্ডিফ রাখে n % 5 ==0 "Buzz" এন্ড রাখে

আপনি modulo ব্যবহার করতে পারেন অপারেটর প্রতি Nth বার জিনিস করতে.

এরকম :

(1..10)। { |n| নির্বাচন করুন n % 2 ==0 }# [2, 4, 6, 8, 10]

অথবা আপনি step ব্যবহার করতে পারেন পদ্ধতি:

(2..10)।পদক্ষেপ(2).to_a# [2, 4, 6, 8, 10]

ডিভমোড পদ্ধতি ব্যবহার করা

মডুলো অপারেটরের আরেকটি ব্যবহার হল মিনিটকে ঘন্টা + অবশিষ্ট মিনিটে রূপান্তর করা।

উদাহরণ :

আমাদের 90 মিনিট আছে, যা 1 ঘন্টা এবং 30 মিনিটের সমান।

ঘন্টা, মিনিট =90.divmod(60)# [1, 30]

divmod লক্ষ্য করুন পদ্ধতি:

এটি একই সময়ে বিভাগ এবং মডুলো (বিভাগের অবশিষ্ট অংশ) করে।

খুব সহায়ক!

নম্বর সিস্টেম বোঝা

একটি সংখ্যা পদ্ধতি হল সংখ্যা প্রতিনিধিত্ব করার একটি উপায়৷

সংখ্যার আপনার দৈনন্দিন ব্যবহারে আপনি দশমিক সিস্টেম ব্যবহার করেন .

0123456789

একটি সংখ্যা সিস্টেম সংখ্যার একটি সেট এবং কখনও কখনও অক্ষরও গঠিত।

উদাহরণস্বরূপ :

হেক্সাডেসিমেল সিস্টেম মোট 16টি চিহ্ন ব্যবহার করে।

0123456789abcdef

এখানে সাধারণ সংখ্যাসূচক সিস্টেমের একটি সারণী আছে :

নাম প্রতীক গণনা চিহ্ন
হেক্সাডেসিমাল 16 0123456789abcdef
দশমিক 10 0123456789
অক্টাল 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টি বুলিয়ান মান প্যাক করতে পারি৷

আমরা বিটওয়াইজ অপারেটর ব্যবহার করতে যাচ্ছি।

এখানে একটি টেবিল আছে :

নাম চিহ্ন ব্যবহার করুন
XOR (এক্সক্লুসিভ বা) ^ টগল বিট
এবং & চেক বিট
না ~ সাফ বিট
বা | বিট সেট করুন

বিটওয়াইজ অপারেটররা বিআইটি স্তরে কাজ করে এবং আমরা ঠিক এটাই চাই।

এখানে একটি কোড উদাহরণ :

ক্লাস বিটমাস্ক ডিফ ইনিশিয়ালাইজ @value =0 শেষ ডিফ সেট(বিট) @value |=বিট শেষ ডিফ ক্লিয়ার(বিট) @value &=~বিট শেষ ডিফ চেক(বিট) (@মান এবং বিট) ==বিট শেষ def to_binary @value.to_s(2) endendbit =Bitmask.new

কিভাবে বিটমাস্কিং ব্যবহার করবেন

এখন আপনি set ব্যবহার করতে পারেন , clear &check এই তথ্য কাঠামোর সাথে কাজ করার পদ্ধতি। প্রতিটি মানের অর্থ কী তা বর্ণনা করার জন্য আপনি ধ্রুবক সংজ্ঞায়িত করতে চাইতে পারেন।

উদাহরণ :

শ্রেণীর বিটমাস্ক ENGINES_ENABLED =1 CAPTAIN_ABOARD =2 SHIELDS_UP =4 # ... বাকি কোড hereendbit =Bitmask.newbit.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) (n এর লগ2)
  • digits (পূর্ণসংখ্যাকে অঙ্কের বিপরীত অ্যারেতে রূপান্তর করে)

উদাহরণ :

5 ** 2# 25-10.abs# 10300.digits# [0, 0, 3] 

রুবি ভিডিওতে গণিত

সারাংশ

আপনি কিছু আকর্ষণীয় গণিত কৌশল শিখেছেন, যেমন মডিউল % ব্যবহার করা একটি বিভাগের অবশিষ্টাংশ খুঁজে বের করতে। একটি সংখ্যা অন্য দ্বারা বিভাজ্য কিনা তা পরীক্ষা করতে আপনি অবশিষ্টাংশ ব্যবহার করতে পারেন৷

আপনি নম্বর সিস্টেম, বিটমাস্কিং এবং বিটওয়াইজ অপারেটর সম্পর্কেও শিখেছেন।

এই পোস্টটি শেয়ার করতে ভুলবেন না...

এবং RubyGuides নিউজলেটারে সদস্যতা নিতে যদি আপনি এখনও না থাকেন!


  1. রুবির সাথে সিলেকশন সর্ট বোঝা

  2. TCmalloc-এর সাথে রুবির মেমরি বরাদ্দের প্রোফাইলিং

  3. রুবি দিয়ে কীভাবে পার্সার তৈরি করবেন

  4. রুবি স্ট্রিং বিন্যাস