এই নিবন্ধে আমরা পাইথন ৩.x-এ counter() ফাংশন ব্যবহার করে কিভাবে একটি স্ট্রিংকে প্যাংগ্রাম বানানো যায় তা শিখব। এজন্য আমরা ইনপুট স্ট্রিং থেকে যেকোনো ক্যারেক্টার রিমুভ করতে পারব। আমরা এছাড়া স্ট্রিংকে অ্যানাগ্রাম বানাতে কতগুলো ক্যারেক্টার রিমুভ করতে হবে তা বের করব।
দুটি স্ট্রিং একে অপরের অ্যানাগ্রাম বলা হয় যখন সেগুলো একই টাইপের অ্যালফাবেট যেকোনো র্যান্ডম অর্ডারে ধারণ করে।
Counter() মেথড পাইথনে উপলব্ধ collections মডিউলে আছে। প্রিরিকোয়িজিট হলো collections মডিউল ইম্পোর্ট করা counter() ফাংশন ব্যবহার করার জন্য।
অ্যালগরিদম
1. ইনপুট স্ট্রিংকে ডিকশনারি টাইপে কনভার্ট করা যেখানে ক্যারেক্টারগুলো কী হিসেবে এবং তাদের ফ্রিকোয়েন্সি ভ্যালু হিসেবে থাকবে Counter(inp_str) ব্যবহার করে collections মডিউলে উপলব্ধ। 2. উভয় ডিকশনারির টোটাল কী সংখ্যা কাউন্ট করা এবং উভয় ডিকশনারিতে কমন কী সংখ্যা কাউন্ট করা। 3. যদি কোনো কমন কী না পাওয়া যায়, এর মানে উভয় ইনপুট স্ট্রিং থেকে (উভয় ডিকশনারির লেন্থের যোগফল) ক্যারেক্টার রিমুভ করার প্রয়োজন। 4. অন্যথায় (max(উভয় ডিকশনারির লেন্থ) - কমন কী সংখ্যা) দিবে রিমুভ করার প্রয়োজনীয় ক্যারেক্টার সংখ্যা।
collections.Counter হলো একটি ডিকশনারি সাবক্লাস যা ইন্টারপ্রেটার দিয়ে অটোমেটিক্যালি লেটার কাউন্ট নিশ্চিত করে। আমরা আসলে সাবস্ট্রিং তৈরি করতে হবে না বা ম্যানুয়ালি চেক করতে হবে না যে সেগুলো অ্যানাগ্রাম কিনা।
উদাহরণ
# দুটি স্ট্রিংকে অ্যানাগ্রাম বানানো
from collections import Counter
def convertAnagram(str_1, str_2):
# স্ট্রিংকে ডিকশনারি টাইপে কনভার্ট
dict_1 = Counter(str_1)
dict_2 = Counter(str_2)
keys_1 = dict_1.keys()
keys_2 = dict_2.keys()
# উভয় কী লিস্টে কী সংখ্যা কাউন্ট
count_1 = len(keys_1)
count_2 = len(keys_2)
# কী জোড়াকে সেটে কনভার্ট করে কমন কী বের করা
set_1 = set(keys_1)
commonKeys = len(set_1.intersection(keys_2))
if (commonKeys == 0): # কোনো কমন জিনিস পাওয়া যায়নি অর্থাৎ সব ডিস্টিনCTV
return (count_1 + count_2)
else: # কিছু এলিমেন্ট ইতিমধ্যে ইনপুটে ম্যাচ করছে
return (max(count_1, count_2) - commonKeys)
str_1 = 'Tutorials'
str_2 = 'sTutalori'
str_3 = 'Point'
print(convertAnagram(str_1, str_2))
print(convertAnagram(str_3, str_2))
আউটপুট
0 6
উপসংহার
এই নিবন্ধে আমরা পাইথন ২.x-এ অ্যানাগ্রাম রিলেশন মেইনটেইন করার জন্য প্রয়োজনীয় ক্যারেক্টার সংখ্যা কাউন্ট করে দুটি স্ট্রিংকে একে অপরের অ্যানাগ্রাম বানানো শিখেছি।