কম্পিউটার টিউটোরিয়াল

পাইথনে সংখ্যা অক্টেলে প্যালিনড্রোম কিনা তা যাচাই করা

মান লিজিয়ে আমাদের একটি সংখ্যা আছে যা অক্টেল (octal) বা ডেসিমেল (decimal) রূপে হতে পারে। যদি এটি অক্টেল রূপে থাকে তবে যাচাই করুন এটি প্যালিনড্রোম কিনা। যদি সংখ্যাটি ডেসিমেলে থাকে, তবে এটি অক্টেলে রূপান্তর করুন তারপর যাচাই করুন এটি প্যালিনড্রোম কিনা।

যেমন, ইনপুট যদি num = 178 হয়, তবে আউটপুট হবে True কারণ সংখ্যাটি অক্টেল রূপে নয় (৮ অক্টেলে বৈধ সিম্বল নয় কিন্তু ডেসিমেলে বৈধ), তাই এটি অক্টেলে রূপান্তর করলে ২৬২ হয় যা প্যালিনড্রোম।

সমাধানের ধাপসমূহ

  • base := 8 যখন num-এর সব অঙ্ক ৮-এর নিচে থাকে, অন্যথায় ১০
  • oct_list := একটি নতুন লিস্ট
  • <লি>যখন num ০ নয়, করুন:
    • (num mod base) oct_list-এর শেষে ইনসার্ট করুন
    • num := num / base-এর ভাগফল
  • j := oct_list-এর সাইজ - ১
  • k := 0
  • যখন k <= j, করুন:
    • যদি oct_list[j] oct_list[k] সমান না হয়, তবে:
      • False রিটার্ন করুন
    • j := j - 1, k := k + 1
  • True রিটার্ন করুন

উদাহরণ

বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:

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
  1. পাইথনে একটি সংখ্যা ডাইহেড্রাল প্রাইম (Dihedral Prime) কিনা যাচাই করা

  2. পাইথন প্রোগ্রাম: কোনো সংখ্যা প্রাইম কিনা তা যাচাই করা

  3. পাইথনে প্যালিনড্রোম স্ট্রিং চেক করা

  4. পাইথনে বাইনারি রিপ্রেজেন্টেশন প্যালিনড্রোম কিনা যাচাই করার প্রোগ্রাম