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

পাইথনে লিস্ট অল্টারনেটিং ইনক্রিজ-ডিক্রিজ প্যাটার্ন ফলো করে কিনা চেক করা

একটি নম্বর লিস্ট nums দেওয়া আছে। লিস্টটি কি স্ট্রিক্টলি ইনক্রিজিং → স্ট্রিক্টলি ডিক্রিজিং → ইনক্রিজিং... প্যাটার্ন ফলো করে? শুধু ইনক্রিজিং হলে ও ভ্যালিড।

ইনপুট উদাহরণ

nums = [2, 4, 8, 7, 5, 1, 5, 7, 2, 1]

আউটপুট: True

ব্যাখ্যা

  • [2,4,8] → ইনক্রিজিং
  • [7,5,1] → ডিক্রিজিং
  • [5,7] → ইনক্রিজিং
  • [2,1] → ডিক্রিজিং

পাইথন কোড

def solve(nums):
    if nums[1] <= nums[0]:
        return False
    for i in range(len(nums)):
        if i - 1 >= 0:
            if nums[i] == nums[i - 1]:
                return False
    return True

# টেস্ট
print(solve([2, 4, 8, 7, 5, 1, 5, 7, 2, 1]))  # True

⚠️ দ্রষ্টব্য

দেওয়া কোডটি অসম্পূর্ণ। এটি শুধু চেক করে যে কোনো দুটি এডজেসেন্ট এলিমেন্ট সমান নয় এবং প্রথম দুটি ইনক্রিজিং। আসল অল্টারনেটিং প্যাটার্ন চেক করার জন্য ডাইরেকশন ট্র্যাক করা লাগবে।

সঠিক অ্যালগরিদম

def solve(nums):
    if len(nums) < 2:
        return True
    if nums[1] <= nums[0]:
        return False
    increasing = True
    for i in range(2, len(nums)):
        if nums[i] == nums[i-1]:
            return False
        if increasing:
            if nums[i] < nums[i-1]:
                increasing = False
        else:
            if nums[i] > nums[i-1]:
                increasing = True
    return True
  1. পাইথনে ব্লকের তালিকা y=x রেখা দিয়ে সিমেট্রিক কিনা যাচাই করার প্রোগ্রাম

  2. পাইথনে গ্রাফ বাইপার্টাইট কিনা যাচাই করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম: স্ট্রিং হেটেরোগ্রাম (Heterogram) কিনা চেক করা

  4. পাইথনে লিস্ট খালি কিনা যাচাই করার প্রোগ্রাম