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

পাইথনে কাট ইন্টারভালের সাথে ইন্টারসেক্ট না করা ইন্টারভাল বের করার প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে একটি সর্টেড এবং ডিসজয়েন্ট (non-overlapping) ইন্টারভালের তালিকা আছে এবং অন্য একটি cut ইন্টারভাল। আমাদের কাজ হল cut ইন্টারভালের সাথে ইন্টারসেক্ট করা সব অংশ মুছে ফেলা এবং বাকি অংশগুলো নতুন লিস্ট হিসেবে রিটার্ন করা।

উদাহরণস্বরূপ, যদি ইনপুট হয় intervals = [[2, 11],[13, 31],[41, 61]] এবং cut = [8, 46], তবে আউটপুট হবে [[2, 8], [46, 61]]।

সমাধানের ধাপসমূহ:
  • cut_start, cut_end := cut
  • ans := []
  • প্রতিটি (start, end) এর জন্য intervals-এ:
    • যদি max(cut_start, start) < min(end, cut_end) হয় (অর্থাৎ ইন্টারসেক্ট করে), তবে:
      • যদি start < cut_start হয়, তবে [start, cut_start] কে ans-এ ঢুকান।
      • যদি end > cut_end হয়, তবে [cut_end, end] কে ans-এ ঢুকান।
    • অন্যথায় (ইন্টারসেক্ট না করলে), [start, end] কে ans-এ ঢুকান।
  • ans রিটার্ন করুন।
উদাহরণ কোড
class Solution:
    def solve(self, intervals, cut):
        cut_start, cut_end = cut
        ans = []
        for start, end in intervals:
            if max(cut_start, start) < min(end, cut_end):
                if start < cut_start:
                    ans.append([start, cut_start])
                if end > cut_end:
                    ans.append([cut_end, end])
            else:
                ans.append([start, end])
        return ans

ob = Solution()
intervals = [[2, 11],[13, 31],[41, 61]]
cut = [8, 46]
print(ob.solve(intervals, cut))
ইনপুট
[[2, 11],[13, 31],[41, 61]], [8, 46]
আউটপুট
[[2, 8], [46, 61]]
  1. পাইথনে একই x বা y কোঅর্ডিনেট वाले নিকটতম পয়েন্ট খুঁজে বের করা

  2. পাইথন প্রোগ্রামে অ্যারের যোগফল বের করা

  3. পাইথনে ম্যাট্রিক্সের ট্রান্সপোজ বের করা

  4. পাইথনে অ্যারের যোগফল বের করা