রুবি সেট কি?
একটি সেট হল একটি শ্রেণী যা একটি অ্যারের মত আইটেম সঞ্চয় করে...
কিন্তু কিছু বিশেষ বৈশিষ্ট্যের সাথে যা এটিকে 10x দ্রুত করে নির্দিষ্ট পরিস্থিতিতে!
তার উপরে:
একটি সেটের সমস্ত আইটেম অনন্য হওয়ার গ্যারান্টিযুক্ত৷ .
এই রুবি টিউটোরিয়ালে আপনি শিখবেন:
- আপনার সর্বাধিক সুবিধার জন্য একটি সেট কীভাবে এবং কখন ব্যবহার করবেন
- সেট এবং অ্যারের মধ্যে পার্থক্য!
- উপযোগী সেট পদ্ধতির একটি তালিকা
চলুন শুরু করা যাক!
রুবি সেট উদাহরণ
একটি সেট হল একটি রুবি ক্লাস যা আপনাকে অনন্য আইটেমগুলির একটি তালিকা তৈরি করতে সাহায্য করে৷ .
এটি কীভাবে কার্যকর তার একটি উদাহরণ এখানে দেওয়া হল:
ধরুন আপনি পণ্যের একটি বড় তালিকার উপরে যাচ্ছেন।
কিন্তু সদৃশ এন্ট্রি আছে এই তালিকায় এবং আপনি শুধুমাত্র অনন্য পণ্য চান।
আপনি সেগুলিকে একটি সেটে রাখতে পারেন এবং সেটটি নিশ্চিত করবে যে আপনার পণ্য তালিকা সর্বদা অনন্য কোন অতিরিক্ত কাজ ছাড়াই .
এটি কীভাবে করবেন তা এখানে:
require 'set'products =Set.newproducts <<1products <<1products <<2products# সেট:{1, 2}
আরেকটি সুবিধা হল যে এই তালিকাটি অনুসন্ধান করা খুব দ্রুত হবে :
products.include?(1)# সত্য
এটি এত দ্রুত কারণ অনুসন্ধানটি ধ্রুবক সময়ে করা হয়৷
সেট বনাম অ্যারে - পার্থক্য বোঝা
এখন আপনি হয়তো ভাবছেন...
একটি সেট এবং একটি অ্যারের মধ্যে পার্থক্য কী?
একটি সেটের উপাদানগুলিতে সরাসরি অ্যাক্সেস নেই:
পণ্য[0]# অনির্ধারিত পদ্ধতি `[]'
এটাই প্রধান পার্থক্য।
কিন্তু একটি সেট একটি অ্যারেতে রূপান্তরিত হতে পারে যে কোন সময় আপনার প্রয়োজন:
products.to_a# [1, 2]
একটি সেট ব্যবহার করার সম্পূর্ণ পয়েন্ট হল এর দুটি বিশেষ বৈশিষ্ট্য ব্যবহার করা:
- দ্রুত খোঁজার সময় (
include?
সহ ) - অনন্য মান
আপনার যদি এগুলোর প্রয়োজন হয় তাহলে একটি সেট আপনাকে ভালো পারফরম্যান্স বুস্ট দেবে , এবং আপনাকে uniq
কল করতে হবে না আপনি যখনই অনন্য উপাদান চান আপনার অ্যারেতে৷
সেট বনাম অ্যারে বেঞ্চমার্ক
অ্যারে এবং সেট include?
এর মধ্যে পারফরম্যান্সের পার্থক্য দেখানোর জন্য এখানে একটি বেঞ্চমার্ক রয়েছে পদ্ধতি।
# রুবি 2.5.0 সেট অন্তর্ভুক্ত:8381985.2 i/sarray অন্তর্ভুক্ত:703305.5 i/s - 11.92x ধীর
এই পার্থক্যের কারণ হল যে একটি অ্যারেকে প্রতিটি উপাদান পরীক্ষা করতে হবে!
আপনার যদি 1 মিলিয়ন উপাদান অ্যারে থাকে তবে আপনি প্রতিবার include?
কল করলে এটি 1 মিলিয়ন উপাদান পরীক্ষা করবে .
একটি সেট এটি করতে হবে না.
রুবি সেট পদ্ধতি
অনেকগুলি অপারেশন বা পদ্ধতি রয়েছে যা সেটগুলির মধ্যে করা যেতে পারে, যদি আপনার কিছু গণিতের পটভূমি থাকে তবে আপনি সেগুলি চিনতে সক্ষম হতে পারেন৷
ইউনিয়ন অপারেটর
একটি দরকারী সেট পদ্ধতি হল ইউনিয়ন অপারেটর:
<প্রি>পণ্য | (1..10)# সেট:{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}এই অপারেটর আপনাকে দুটি সেটের সমস্ত অনন্য উপাদান এক সেটে একত্রিত করতে দেয়৷
Btw, এটি যেকোন গণনাযোগ্য বস্তুর সাথে কাজ করে, যেমন অ্যারে, রেঞ্জ এবং হ্যাশ, শুধুমাত্র Set
থেকে অবজেক্ট নয়। ক্লাস।
পার্থক্য অপারেটর
আপনি যদি অন্য সেট থেকে একটি সেটের উপাদানগুলি সরাতে চান তবে এটি আপনার পদ্ধতি৷
এখানে একটি উদাহরণ আছে :
পণ্য - (3..4)# সেট:{1, 2, 5, 6, 7, 8, 9, 10}
ইন্টারসেকশন অপারেটর
এবং এখানে সেট ইন্টারসেকশন অপারেটর:
Set.new(1..3) &Set.new(2..5)# সেট:{2, 3}
এটি আপনাকে উভয় সেটে সাধারণ উপাদান দেয়। এই 3টি অপারেটর (ইউনিয়ন, পার্থক্য এবং ছেদ) অ্যারেগুলির সাথেও ব্যবহার করা যেতে পারে৷
সুপারসেট এবং উপসেট
একটি সুপারসেট হল একটি সেট যাতে অন্য সেটের সমস্ত উপাদান থাকে .
আপনি একটি সেট অন্য সেট একটি সুপারসেট কিনা তা পরীক্ষা করতে পারেন.
এরকম :
Set.new(10..40)>=Set.new(20..30)
পরিসর 10..40
20..30
রয়েছে এর মধ্যে।
একটি সাবসেট একটি সেট যা অন্য সেটের অংশ থেকে তৈরি করা হয়:
Set.new(25..27) <=Set.new(20..30)
কিভাবে সাজানো সেট ব্যবহার করবেন
আপনি যদি এমন একটি সেট চান যা সর্বদা সাজানো থাকে আপনি SortedSet
ব্যবহার করতে পারেন ক্লাস।
এই ক্লাসটি ব্যবহার করার জন্য কিছু প্রয়োজনীয়তা রয়েছে:
- আপনি সেটে যে অবজেক্টগুলি যোগ করছেন তা বাস্তবায়ন করতে হবে <=> পদ্ধতি।
- বস্তুগুলিকে অবশ্যই একে অপরের সাথে তুলনীয় হতে হবে (পূর্ণসংখ্যার সাথে পূর্ণসংখ্যা, অথবা স্ট্রিং এর সাথে স্ট্রিং তুলনা করা)
এখানে একটি উদাহরণ:
sorted_numbers =SortedSet.newsorted_numbers <<5sorted_numbers <<2sorted_numbers <<1sorted_numbers# SortedSet:{1, 2, 5}
ভিডিও টিউটোরিয়াল সেট করে
সারাংশ
আপনি শিখেছেন কিভাবে রুবিতে সেট ব্যবহার করতে হয় ভালো পারফরম্যান্স এবং সহজ কোডিং এর জন্য। আপনি অ্যারে এবং সেটের মধ্যে পার্থক্য সম্পর্কেও শিখেছেন।
অনুগ্রহ করে এই নিবন্ধটি শেয়ার করুন যদি আপনি এটি দরকারী বলে মনে করেন যাতে আরো মানুষ এটি খুঁজে পেতে পারে 🙂
পড়ার জন্য ধন্যবাদ!