অ্যাডভান্সড পাইথন প্রোগ্রামিং পর্বঃ ০১ ।। HackerRank solution: Alphabet Rangoli

আমি আজ যে প্রোগামটি আপনাদের দেখাব তা ইউজারের দেওয়া দৈর্ঘ্য অনুযায়ী Alphabet Rangoli প্রিন্ট করে দেখাবে। এটি মূলত HackerRank এর একটি কোডিং চ্যালেঞ্জ যা আমি কমপ্লিট করেছি। প্রোগ্রামটি সহজ হলেও প্রথম অবস্থায় মাথায় না ও আসতে পারে। আর যদি আপনার মাথায় চলে আসে তাহলে কনগ্রাটস, আপনি পাইথনে অ্যাডভান্সড। চলুন শুরু করি।

এই প্রোগ্রামের জন্য পাইথনের join() মেথড প্রোয়জন পরবে। এই মেথডটি কোনো লিস্টকে জোড়া লাগিয়ে একটি স্ট্রিং বানায়। সেই স্ট্রিং এর মাঝে অন্য কিছু প্রোয়জন পড়লে ইউজার তাও জয়েন করতে পারে এই মেথডের মাধ্যমে।

আরও একটি মেথড center() জানা সম্পর্কে জানা লাগবে। এটি আপনার দেওয়া দৈর্ঘ্য অনুযায়ী স্ট্রিং তৈরি করবে যেখানে আপনার আগের স্ট্রিং কে একটি মাঝের স্থানে রেখে বাকি ফাকা থাকা জায়গায় আপনার দেওয়া দৈর্ঘ্য অনুযায়ী অন্য ক্যারেকটার দ্বারা পূরণ করবে। যেমনঃ ‘samir’.center(9, ‘-‘) এর আউটপুট –samir–

প্রয়জনীয় লাইব্রেরী ইমপোর্ট করছি

import string

a থেকে z পর্যন্ত স্ট্রিং তৈরী করছি

alpha = string.ascii_lowercase

# ইনপুট ও লিস্ট
n = int(input('Enter character length: '))
L = []

রাঙলির দৈর্ঘ্য অনুযায়ী প্রত্যেকটা লাইন তৈরী করে করার জন্য লুপ

for i in range(n-1, -1, -1):
    s = "-".join(alpha[i:n]) # দৈর্ঘ্য অনুযায়ী ক্যারেক্টারের মাঝে '-' যোগ করছি
    str_1 = s[::-1] # 'e-d-c-b-a' এরকম একটি স্ট্রিং তৈরি করেছি
    str_2 = s[1:] # '-b-c-d-e' এরকম একটি স্ট্রিং তৈরি করেছি
    string = str_1 + str_2 # দুটো যোগ করে পাই 'e-d-c-b-a-b-c-d-e'
    L.append(string.center(4n-3, "-")) # লিস্টের ভেতর রেখে দিচ্ছি, center() মেথড উপরে আলোচনা করেছি। এখানে 4n-3 হল প্যাটার্ন, আপনি যেমন ইনপুটই দিবেন না কেন তা এই প্যাটার্ন অনুযায়ী লাইনের দৈর্ঘ্য ধারন করবে।

L লিস্ট থেকে রাঙলির প্রথম ৬০% প্রিন্ট করার প্রয়জনীয় লুপ

for x in L:
    print(x)

L লিস্টকে উলটো করে রাঙলির শেষের ৪০% প্রিন্ট করার প্রয়জনীয় লুপ

for j in range(len(L)-2, -1, -1):
    print(L[j])

Leave a Reply

You cannot copy content of this page