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

পাইথনে Subsets (সাবসেট/পাওয়ার সেট) জেনারেট করা


মান করুন একটি সংখ্যার সেট আছে; আমাদের সেটটির সব সম্ভাব্য সাবসেট জেনারেট করতে হবে। এটিকে পাওয়ার সেটও বলা হয়। সেট [1,2,3] হলে পাওয়ার সেট হবে [[], [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3]]।

ধাপগুলো (রিকারসিভ ব্যাকট্র্যাকিং):

  • রিকারসিভ মেথড solve(), যা নিবে নম্বরের সেট (nums), টেম্পরারি সেট (temp), res এবং index
  • solve() ফাংশন নিচের মতো কাজ করবে:
    • যদি index == len(nums), তবে temp-এর কপি বানিয়ে res-এ ইনসার্ট করুন এবং রিটার্ন
    • temp[index] := 0
    • solve(nums, temp, res, index + 1)
    • temp[index] := 1
    • solve(nums, temp, res, index + 1)
  • মেইন ফাংশন:
    • res := খালি লিস্ট
    • temp লিস্ট nums-এর সাইজে, ০ দিয়ে ফিল করা
    • solve(nums, temp, res, 0) কল করুন
    • main_res := খালি লিস্ট
    • temp_res-এর সব লিস্টের জন্য
      • temp := খালি লিস্ট
      • i ০ থেকে লিস্টের দৈর্ঘ্য
        • যদি lists[i] == 1, তবে nums[i] temp-এ ইনসার্ট করুন
      • temp main_res-এ ইনসার্ট করুন
    • main_res রিটার্ন করুন

নিচে ইমপ্লিমেন্টেশন দেওয়া হলো:

উদাহরণ

class Solution(object):
    def subsets(self, nums):
        temp_result = []
        self.subsets_util(nums, [0 for i in range(len(nums))], temp_result, 0)
        main_result = []
        for lists in temp_result:
            temp = []
            for i in range(len(lists)):
                if lists[i] == 1:
                    temp.append(nums[i])
            main_result.append(temp)
        return main_result

    def subsets_util(self, nums, temp, result, index):
        if index == len(nums):
            result.append([i for i in temp])
            return
        temp[index] = 0
        self.subsets_util(nums, temp, result, index + 1)
        temp[index] = 1
        self.subsets_util(nums, temp, result, index + 1)

ob1 = Solution()
print(ob1.subsets([1, 2, 3, 4]))

ইনপুট

[1,2,3,4]

আউটপুট

[[], [4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], [1], [1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], [1, 2, 3], [1, 2, 3, 4]]
  1. পাইথনে বাইনারি ট্রির ম্যাক্সিমাম ডেপথ (Maximum Depth of Binary Tree)

  2. পাইথনে Sqrt(x) ইমপ্লিমেন্টেশন

  3. পাইথনে issuperset() ফাংশন

  4. পাইথনে callable() ফাংশন