Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าตัวเลขเป็น Palindrome ในฐานแปด (Octal) หรือไม่ด้วย Python


สมมติมีตัวเลขที่อยู่ในรูป Octal หรือ Decimal ถ้าเป็น Octal ตรวจสอบ Palindrome ทันที ถ้าเป็น Decimal แปลงเป็น Octal ก่อนแล้วค่อยตรวจสอบ

เช่น Input num = 178 Output True เพราะ 178 ไม่ใช่ Octal (มี 8) แปลงเป็น Octal ได้ 262 ซึ่งเป็น Palindrome

ขั้นตอนแก้:

  • Base = 8 ถ้าตัวเลขทุกหลัก < 8 มิฉะนั้น Base = 10
  • สร้าง List oct_list เก็บหลัก Octal โดย mod Base แล้วหาร Base ซ้ำ
  • เช็ค Palindrome โดยเปรียบเทียบหัว-ท้ายของ List

ตัวอย่างโค้ด

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))

Input

178

Output

True