এই আর্টিকেলে আমরা পাইথন ৩.x-এ একটি স্ট্রিং "প্যাংগ্রাম" (pangram) কিনা তা নির্ণয় করা শিখব। একটি প্যাংগ্রাম স্ট্রিং আঙ্গলিয়া ভাষার বর্ণমালার সব অক্ষর ধারণ করে। নিচের ইলাস্ট্রেশন দেখুন:
প্রদত্ত ইনপুট: str = 'This is the python blog on Tutorial point' ডিজায়ারড আউটপুট: No প্রদত্ত ইনপুট: str = 'I want to contribute to a 'dxyzwuvghlkfmq' open source project' ডিজায়ারড আউটপুট: Yes
ডিফিনিশন অনুযায়ী, একটি পারফেক্ট প্যাংগ্রামে '২৬ ইংরেজি অক্ষর' প্রতিটি ঠিক একবার থাকে। এই টিউটোরিয়ালে 'পারফেক্ট প্যাংগ্রাম' কনসেপ্ট অন্তর্ভুক্ত নয়।
এখন সমস্যা স্টেটমেন্ট এবং কনস্ট্রেইন্টস দেখি।
প্রব্লেম স্টেটমেন্ট - একটি স্ট্রিং দেওয়া আছে, চেক করুন এটি প্যাংগ্রাম কিনা।
কনস্ট্রেইন্টস
- লোয়ারকেস এবং আপারকেস একই माना जायेगा।
- উপরের 'পারফেক্ট প্যাংগ্রাম' কেসের কোনো বাধ্যতা নেই।
ইনপুট: ইনপুটের প্রথম লাইনে টেস্ট স্ট্রিং 'str_input' থাকে আউটপুট: শর্তসমূহ সত্য হলে 'String is a Pangram' প্রিন্ট করুন, অন্যথায় 'String is not a Pangram'।
রিলেটেড ডেটা স্ট্রাকচার
Set() এবং List() কম্প্রিহেনশন
প্রিরিকুইসাইট
স্ট্রিং এবং স্ট্রিং অপারেশন
আমরা ক्वিকলি অ্যালগরিদম দেখি যা আমরা এই প্রობলেমে বাস্তবায়ন করছি:
প্রথম টাস্ক হলো সম্পূর্ণ ইনপুট স্ট্রিংকে লোয়ারকেস বা আপারকেসে রূপান্তর করা। এখানে আমি upper() মেথড ব্যবহার করছি পাইথন ৩.x-এ string ডেটা টাইপের।
এখন set(str_input) ফাংশন দিয়ে ইনপুট স্ট্রিংয়ের সব ডিস্টিনক্ট এলিমেন্টের একটি লিস্ট তৈরি করা যায়।
এখন একটি নতুন লিস্ট "dist_list" তৈরি করব যেটিতে শুধু ডিস্টিনক্ট অক্ষর রয়েছে, কোনো সংখ্যা বা স্পেশাল ক্যারেক্টার নেই।
এখন চেক করব dist_list-এর দৈর্ঘ্য ২৬ কিনা। শর্ত পূরণ হলে ইনপুট প্যাংগ্রাম, নাহলে নয়।
উদাহরণ
# ইউজার-ডিফাইনড ফাংশন প্যাংগ্রাম চেক করার জন্য
def check_pangram(input):
# ইনপুট স্ট্রিংকে আপারকেসে রূপান্তর
str_input = str_input.upper()
# ইনপুট স্ট্রিংকে Set()-এ রূপান্তর
# ডিস্টিনক্ট এলিমেন্টের একটি লিস্ট তৈরি হবে
str_input = set(str_input)
# অক্ষরগুলো নম্বর এবং স্পেশাল ক্যারেক্টার থেকে পৃথক করা
# ord(ch) ক্যারেক্টারের ASCII ভ্যালু রিটার্ন করে
dist_list = [char for char in str_input if ord(char) in range(ord('a'), ord('z')+1)]
if len(dist_list) == 26:
return 'String is a Pangram'
else:
return 'String is not a Pangram'
# এক্সিকিউটেবল মেইন ফাংশন
if __name__ == "__main__":
str_input = input()
print(check_pangram(str_input))উপসংহার
এই আর্টিকেলে আমরা পাইথন ৩.x-এ একটি স্ট্রিং প্যাংগ্রাম কিনা তা বের করার পদ্ধতি শিখেছি। আপনি একই অ্যালগরিদম ব্যবহার করে যেকোনো অন্য প্রোগ্রামিং ল্যাঙ্গুয়েজে প্যাংগ্রাম ডিটেক্টর প্রোগ্রাম বাস্তবায়ন করতে পারেন।