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

পাইথনে শর্তসাপেক্ষ এডজেসেন্ট সোয়্যাপিং (conditional adjacent swapping) দিয়ে অ্যারে সর্ট করা সম্ভব কিনা তা যাচাই করা

মান লিজিয়ে আমাদের একটি অনর্ডারড (unordered) অ্যারে nums আছে এবং সব এলিমেন্ট ০ থেকে n-1 রেঞ্জে। আমরা nums-এ যতবার ইচ্ছে এডজেসেন্ট (adjacent) এলিমেন্ট সোয়্যাপ (swap) করতে পারি কিন্তু শুধু তখনই যখন তাদের এবসোলিউট ডিফারেন্স (absolute difference) ১। আমাদের যাচাই করতে হবে nums সর্ট করা সম্ভব কিনা।

যেমন, ইনপুট যদি nums = [1, 0, 3, 2, 5, 4] হয়, তবে আউটপুট হবে True কারণ আমরা এই জোড়াগুলো [(1, 0), (3, 2), (5, 4)] সোয়্যাপ করে সর্ট করতে পারি [0, 1, 2, 3, 4, 5]।

সমাধানের ধাপসমূহ

  • i ০ থেকে nums-এর সাইজ - ২ পর্যন্ত, করুন:
    • যদি nums[i] > nums[i+1] হয়, তবে:
      • যদি nums[i] - nums[i+1] ১ সমান হয়, তবে:
        • nums[i] এবং nums[i+1] এক্সচেঞ্জ করুন
      • অন্যথায়:
        • False রিটার্ন করুন
  • True রিটার্ন করুন

উদাহরণ

বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:

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

nums = [1, 0, 3, 2, 5, 4]
print(solve(nums))

ইনপুট

[1, 0, 3, 2, 5, 4]

আউটপুট

True
  1. পাইথনে কলাম সওয়াপ (swap) অনুমত থাকলে ১-র সবচেয়ে বড় রেক্ট্যাঙ্গেল খুঁজে বের করা

  2. পাইথন - মার্জ সোর্টের ঠিক K সংখ্যক রিকারসিভ কল দিয়ে অ্যারে তৈরি করা

  3. পাইথনে রিলেটিভ সর্ট অ্যারে (Relative Sort Array in Python)

  4. পাইথনে অ্যারে প্যারিটি অনুযায়ী সাজানো