এখানে একটি ইউজার ইনপুট অ্যারে এবং গ্রুপের আকার ব্যবহার করা হয়েছে। গ্রুপের আকার অনুযায়ী সাবঅ্যারে তৈরি করে সেগুলো উল্টে ফেলা হয়েছে। যদি গ্রুপের আকার (p) অ্যারের আকার (n)-এর গুণিতক না হয়, তবে শেষ গ্রুপে p-এর চেয়ে কম উপাদান থাকবে এবং বাকি সব উল্টে ফেলা হবে। যদি p=1 হয় তবে অ্যারে অপরিবর্তিত থাকে, যদি p>=n হয় তবে পুরো অ্যারে উল্টে যাবে।
অ্যালগরিদম
Revarray(A,n,p) /* A হলো ইন্টিজার অ্যারে, n হলো অ্যারের আকার এবং প্রতিটি সাব-অ্যারে আকার p দিয়ে শুরু থেকে উল্টে ফেলা */ ধাপ ১: i হলো লুপ কন্ট্রোল ভেরিয়েবল যা ০ দিয়ে আরম্ভ। ধাপ ২: while লুপ দিয়ে i, n-এর চেয়ে ছোট কিনা যাচাই। সত্য হলে ধাপ ২.১: L=i /* বাম সাবঅ্যারে ধাপ ২.২: R=min(i+p-1, n-1) /* ডান সাবঅ্যারে ধাপ ২.৩: while লুপ দিয়ে L, R-এর চেয়ে ছোট কিনা যাচাই। হ্যাঁ হলে ধাপ ২.৩.১: বাম সাবঅ্যারে A(L) ও ডান সাবঅ্যারে A(R) স্ব্যাপ করুন। ধাপ ২.৩.২: L ১ বাড়ান। ধাপ ২.৩.৩: R ১ কদম পিছিয়ে যান। ধাপ ২.৪: End While ধাপ ২.৫: i = i + p ধাপ ৩: End While ধাপ ৪: Stop
উদাহরণ কোড
# অ্যারে গ্রুপ অনুযায়ী উল্টে ফেলা
def arrayreverse(A, n, p):
i = 0
while(i < n):
L = i
R = min(i + p - 1, n - 1)
while (L < R):
A[L], A[R] = A[R], A[L]
L += 1
R -= 1
i += p
# ড্রাইভার কোড
# অ্যারেতে ডেটা ইনসার্ট
A = list()
n = int(input("অ্যারের আকার ::"))
print("সংখ্যা দিন ::")
for i in range(int(n)):
k = int(input(""))
A.append(int(k))
p = int(input("গ্রুপের আকার ::"))
arrayreverse(A, n, p)
for i in range(0, n):
print(A[i], end=" ")
আউটপুট
অ্যারের আকার ::6 সংখ্যা :: 11 22 33 44 55 66 গ্রুপের আকার ::2 22 11 44 33 66 55