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

টিউন বিভাগ কম্পিউটিং
প্রকাশিত
জোসস করেছেন

প্রথমেই বলে রাখি আমি নিজে কোনো এক্সপার্ট লেভেলের প্রোগ্রামার না। চেষ্টা করছি উপরে ওঠার। প্রতিনিয়ত শিখছি আর অন্যদের মাঝে শেখা জিনিসটি ছড়িয়ে দেওয়ার চেষ্টা করছি। টেকটিউনসে এতাই আমার প্রথম টিউন। তাই আমার ভুলগুলো ক্ষমা সুন্দর দৃষ্টিতে দেখবেন এবং টিউমেন্ট করে ভুল ধরিয়ে দিতে দিধা করবেন না।

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

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

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

 

# প্রয়জনীয় লাইব্রেরী ইমপোর্ট করছি
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(4*n-3, "-")) # লিস্টের ভেতর রেখে দিচ্ছি, center() মেথড উপরে আলোচনা করেছি।

এখানে 4*n-3 হল প্যাটার্ন, আপনি যেমন ইনপুটই দিবেন না কেন তা এই প্যাটার্ন অনুযায়ী লাইনের দৈর্ঘ্য ধারন করবে।

# L লিস্ট থেকে রাঙলির প্রথম ৬০% প্রিন্ট করার প্রয়জনীয় লুপ
for x in L:
_print(x)

# L লিস্টকে উলটো করে রাঙলির শেষের ৪০% প্রিন্ট করার প্রয়জনীয় লুপ
for j in range(len(L)-2, -1, -1):
_print(L[j])

 

বিগিনারদের জন্য এই প্রোগ্রাম নয়। পাইথনের একটু ধারণা না থাকলে তেমন কিছুই বুঝবেন না।

টিউনটির ভালো মন্দ অবশ্যই টিউমেন্ট করে জানাবেন। উৎসাহ পেলে এমন আরও টিউন নিয়ে হাজির হব ইনশা আল্লাহ।

ঘরে থাকুন সুস্থ্য থাকুন, অন্যের সুস্থ্যতা কামনা করুন। ধন্যবাদ।

Level 1

আমি হিমেল বিকন। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 3 বছর 7 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 9 টি টিউন ও 0 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস