ধরুন আমাদের একটি সংখ্যা আছে যা হয় অক্টাল বা দশমিক আকারে। যদি এটি অক্টাল আকারে হয় তবে এটি প্যালিনড্রোম কিনা তা পরীক্ষা করুন। যদি সংখ্যাটি দশমিকে হয়, তাহলে এটিকে অক্টালে রূপান্তর করুন তারপর এটি প্যালিনড্রোম কিনা তা পরীক্ষা করুন।
সুতরাং, যদি ইনপুটটি num =178 এর মত হয়, তাহলে আউটপুটটি True হবে কারণ সংখ্যাটি অক্টাল আকারে নয় (8 অক্টালে বৈধ প্রতীক নয় কিন্তু দশমিকে বৈধ), তারপর এটিকে অক্টালে রূপান্তর করুন যা 262 এবং এটি হল প্যালিনড্রোম।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- বেস :=8 যখন সংখ্যার সমস্ত সংখ্যা 8 এর নিচে হয়, অন্যথায় 10
- oct_list :=একটি নতুন তালিকা
- সংখ্যা 0 না হলেও
- করুন
- অক্ট_লিস্টের শেষে সন্নিবেশ করুন (সংখ্যা মোড বেস)
- num :=(num / base) এর ভাগফল
- j :=oct_list - 1 এর আকার
- k :=0
- যখন k <=j, do
- যদি oct_list[j] oct_list[k] এর মত না হয়, তাহলে
- মিথ্যে ফেরত দিন
- j :=j - 1, k :=k + 1
- যদি oct_list[j] oct_list[k] এর মত না হয়, তাহলে
- সত্য ফেরান
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def is_all_under_8(num): while num: if (num % 10) >= 8: return False else: num = int(num / 10) return True def solve(num): base = 8 if(is_all_under_8(num) == False) else 10 oct_list = [] while num != 0: oct_list.append(num % base) num = int(num / base) j = len(oct_list)-1 k = 0 while k <= j: if oct_list[j] != oct_list[k]: return False j-=1 k+=1 return True num = 178 print(solve(num))
ইনপুট
178
আউটপুট
True