মান লিজিয়ে আমাদের একটি সংখ্যা n আছে। আমাদের যাচাই করতে হবে সেটি থেকে একটি বর্ণানুক্রমিক লোয়ারকেস স্ট্রিং (alphabetical lowercase string) তৈরি করা সম্ভব কিনা এবং সেটি প্যালিনড্রোম (palindrome) কিনা। এখানে আমরা শুধু a থেকে j পর্যন্ত ক্যারেক্টার নেব, [a = 0, b = 1... j = 9]। তাই যদি সংখ্যা ৪২ হয় তবে সাবস্ট্রিং "ec" প্রিন্ট হবে ৬ (৪+২) ক্যারেক্টর পর্যন্ত "ececec" তারপর চেক করব এটি প্যালিনড্রোম কিনা।
যেমন, ইনপুট যদি n = 43 হয়, তবে আউটপুট হবে True কারণ স্ট্রিং হবে "ededede" যা প্যালিনড্রোম।
সমাধানের ধাপসমূহ
temp :=খালি স্ট্রিংs := nস্ট্রিং হিসেবেletters :=a থেকে j পর্যন্ত সব ক্যারেক্টারsum := 0substr :=খালি স্ট্রিংi০ থেকেs-এর সাইজ - ১ পর্যন্ত, করুন:d := s[i]-কে নামেরিক ডিজিট (numeric digit) হিসেবে নিনsubstr := substr + letters[d]sum := sum + d
- যখন
temp-এর সাইজsum-এর চেয়ে ছোট বা সমান, করুন:temp := temp + substr
temp := temp[0 থেকে sum - 1]ইনডেক্স পর্যন্তtrueরিটার্ন করুন যখনtempপ্যালিনড্রোম, অন্যথায়false
উদাহরণ
বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:
def isPalindrome(s):
return s == s[::-1]
def solve(n):
temp = ""
s = str(n)
letters = "abcdefghij"
sum = 0
substr = ""
for i in range(len(s)):
d = int(s[i])
substr += letters[d]
sum += d
while len(temp) <= sum:
temp += substr
temp = temp[:sum]
return isPalindrome(temp)
n = 43
print(solve(n))
ইনপুট
43
আউটপুট
True