যদি একটি স্ট্রিং Симেট্রিক্যাল কিনা বা প্যালিনড্রোম কিনা চেক করতে হয়, তবে একটি মেথড সংজ্ঞায়িত করা হয় যা 'while' কন্ডিশন ব্যবহার করে। আরেকটি মেথড সংজ্ঞায়িত করা হয় симেট্রি চেক করতে যা 'while' এবং 'if' কন্ডিশন ব্যবহার করে।
একটি প্যালিনড্রোম হলো এমন সংখ্যা বা স্ট্রিং, যা বাম থেকে ডানে বা ডান থেকে বামে পড়লে একই মান থাকে। ইনডেক্স ভ্যালুগুলো একই থাকে।
উদাহরণ
নিচে ডেমোстран্স্ট্রেশন দেওয়া হলো:
def check_palindrome(my_str):
mid_val = (len(my_str) - 1) // 2
start = 0
end = len(my_str) - 1
flag = 0
while start < mid_val:
if my_str[start] == my_str[end]:
start += 1
end -= 1
else:
flag = 1
break
if flag == 0:
print("The entered string is palindrome")
else:
print("The entered string is not palindrome")
def check_symmetry(my_str):
n = len(my_str)
flag = 0
if n % 2:
mid_val = n // 2 + 1
else:
mid_val = n // 2
start_1 = 0
start_2 = mid_val
while start_1 < mid_val and start_2 < n:
if my_str[start_1] == my_str[start_2]:
start_1 = start_1 + 1
start_2 = start_2 + 1
else:
flag = 1
break
if flag == 0:
print("The entered string is symmetrical")
else:
print("The entered string is not symmetrical")
my_string = 'phphhphp'
print("The method to check a palindrome is being called...")
check_palindrome(my_string)
print("The method to check symmetry is being called...")
check_symmetry(my_string)
আউটপুট
The method to check a palindrome is being called... The entered string is palindrome The method to check symmetry is being called... The entered string is not symmetrical
ব্যাখ্যা
- 'check_palindrome' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা একটি স্ট্রিং প্যারামিটার হিসেবে নেয়।
- মাঝখানের ভ্যালু ২ দিয়ে ফ্লোর ডিভিশন করে ক্যালকুলেট করা হয়েছে।
- স্টার্ট ভ্যালু ০-এ এবং এন্ড ভ্যালু লাস্ট এলিমেন্টে অ্যাসাইন করা হয়েছে।
- 'flag' নামে একটি ভেরিয়েবল ০-এ অ্যাসাইন করা হয়েছে।
- একটি 'while' কন্ডিশন শুরু হয়েছে, এবং যদি স্টার্ট এবং এন্ড এলিমেন্ট সমান হয়, তবে স্টার্ট ভ্যালু ইনক্রিমেন্ট এবং এন্ড ভ্যালু ডিক্রিমেন্ট করা হয়েছে।
- অন্যথায়, 'flag' ভেরিয়েবল ১-এ অ্যাসাইন করা হয়েছে, এবং লুপ থেকে ব্রেক করা হয়েছে।
- যদি 'flag'-এর ভ্যালু ০ হয়, তবে স্ট্রিংটি প্যালিনড্রোম, অন্যথায় নয়।
- 'check_symmetry' নামে আরেকটি মেথড সংজ্ঞায়িত করা হয়েছে, যা একটি স্ট্রিং প্যারামিটার হিসেবে নেয়।
- স্ট্রিং-এর দৈর্ঘ্য একটি ভেরিয়েবলে অ্যাসাইন করা হয়েছে।
- যদি দৈর্ঘ্য এবং ২-এর ভাগশেষ ০ নয়, তবে মাঝখানের ভ্যালু পরিবর্তন করা হয়েছে।
- স্টার্ট এবং মাঝখানের ভ্যালু আবার পরিবর্তন করা হয়েছে।
- একটি আরো 'while' কন্ডিশন ব্যবহার করা হয়েছে, এবং স্টার্ট ভ্যালুগুলো আবার পরিবর্তন করা হয়েছে।
- যদি 'flag'-এর ভ্যালু ০ হয়, তবে স্ট্রিংটি Симেট্রিক্যাল বলে বিবেচনা করা হয়।
- অন্যথায় নয়।