কম্পিউটার টিউটোরিয়াল

পাইথনে লাইব্রেরি সেট ক্লাস ছাড়া সেট ডেটা স্ট্রাকচার ইমপ্লিমেন্ট করা

বিল্ট-ইন set ক্লাস ব্যবহার না করে একটি সেট ডেটা স্ট্রাকচার ইমপ্লিমেন্ট করুন যাতে মেথড থাকে: add(val), exists(val), remove(val)।

ইনপুট উদাহরণ

s = MySet()
s.add(10); s.add(20); s.add(10)
s.exists(10)  # True
s.remove(10)
s.exists(10)  # False
s.exists(20)  # True

অ্যালগরিদম

হ্যাশ টেবিল (ডিকশনারি) ব্যবহার করে: buckets[key] = [values]। এখানে কollision হ্যান্ডলিং ছাড়া সিম্পল ইমপ্লিমেন্টেশন (কারণ কি নিজেই হ্যাশ)।

পাইথন কোড

from collections import defaultdict

class MySet:
    def __init__(self):
        self.buckets = defaultdict(list)
    
    def add(self, val):
        if not self.exists(val):
            self.buckets[val].append(val)
    
    def exists(self, val):
        return val in self.buckets[val]
    
    def remove(self, val):
        del self.buckets[val]

# টেস্ট
s = MySet()
s.add(10); s.add(20); s.add(10)
print(s.exists(10))  # True
s.remove(10)
print(s.exists(10))  # False
print(s.exists(20))  # True

ব্যাখ্যা

defaultdict(list) ব্যবহার করা হয়েছে। exists এ val in self.buckets[val] চেক করে (লিস্টে সার্চ, O(1) এভারেজ)। বাস্তবে হ্যাশ ফাংশন এবং কলিশন রেজোলিউশন (চেইনিং/ওপেন অ্যাড্রেসিং) ইমপ্লিমেন্ট করতে হয়।

  1. পাইথনে Seaborn লাইব্রেরি দিয়ে ডেটা ভিজ্যুয়াল রিপ্রেজেন্টেশনের পদ্ধতি

  2. পাইথনে লুপ ছাড়া নাম্বার সিরিজ প্রিন্ট করা (রিকার্শন)

  3. পাইথন প্রোগ্রাম: লুপ ছাড়া নাম্বার সিরিজ প্রিন্ট করা

  4. পাইথনে এক্সপ্লোরেটরি ডেটা অ্যানালিসিস (Exploratory Data Analysis)