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

পাইথনে রাইট রোটেশন দিয়ে ১ থেকে n প্রাকৃতিক সংখ্যা ক্রমে সাজানো যায় কিনা চেক করা

একটি লিস্ট nums (লেংথ n) দেওয়া আছে। কি এটি রাইট রোটেশন দিয়ে [1,2,...,n] বা [n,n-1,...,1] বানানো সম্ভব?

ইনপুট উদাহরণ

nums = [5, 6, 1, 2, 3, 4]

আউটপুট: True (৪ বার রাইট রোটেট করলে [1,2,3,4,5,6])

অ্যালগরিদম

একটি সার্কুলার অ্যারে ১..n বা n..1 হলে, প্রতিটি এডজেসেন্ট পেয়ারের ডিফারেন্স বা ১ হবে অথবা n-1 (র‍্যাপ অ্যারাউন্ড)। এই প্রপার্টি চেক করুন।

পাইথন কোড

def solve(nums):
    n = len(nums)
    for i in range(1, n):
        diff = abs(nums[i-1] - nums[i])
        if diff != 1 and diff != n - 1:
            return False
    return True

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

ব্যাখ্যা

সার্কুলার পারমুটেশন চেক। যদি সব এডজেসেন্ট ডিফারেন্স ১ বা n-1 হয়, তবে এটি ১..n বা n..1-এর রোটেশন। সময় O(n)।

  1. পাইথনে লিস্ট স্ট্রিক্টলি ইনক্রিজিং বা ডিক্রিজিং কিনা যাচাই করার প্রোগ্রাম

  2. পাইথনে একটি সংখ্যার সব রোটেশন প্রাইম কিনা যাচাই করার প্রোগ্রাম

  3. পাইথনে প্রথম n প্রাকৃতিক সংখ্যার বর্গের যোগফল

  4. পাইথনে প্রথম n প্রাকৃতিক সংখ্যার ঘনফলের যোগফল প্রোগ্রাম