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

โปรแกรม Python ตรวจสอบว่าไบนารีของสองตัวเลขเป็นอะนาการแกรมหรือไม่

กำหนดตัวเลขสองตัว งานคือตรวจสอบว่าเป็นอะนาการแกรมกันในรูปไบนารีหรือไม่ แก้ได้เร็วใน Python ด้วย Counter(iterable) และการเปรียบเทียบดิกชันนารี

ตัวอย่าง

Input: a = 8, b = 16
Output : Yes
ไบนารีของทั้งสองตัวมี 0 และ 1 เท่ากัน

อัลกอริทึม

ขั้นตอนที่ 1: กำหนดตัวเลขสองตัว
ขั้นตอนที่ 2: แปลงทั้งสองเป็นไบนารีด้วย bin() ลบสองตัวแรกเพราะ bin()
ขั้นตอนที่ 3: เนื่องจากความยาวไบนารีอาจต่างกัน ให้เติมศูนย์หน้าสตริงที่สั้นกว่าให้เท่ากัน
ขั้นตอนที่ 4: เปรียบเทียบดิกชันนารี ถ้าค่า 0 และ 1 ในทั้งสองเท่ากัน ไบนารีเป็นอะนาการแกรม

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

# ฟังก์ชันตรวจสอบว่าไบนารีของสองตัวเลขเป็นอะนาการแกรม
from collections import Counter

def anagramoftwonumber(p1, p2):
    # แปลงเป็นไบนารีและลบสองตัวแรก
    bno1 = bin(p1)[2:]
    bno2 = bin(p2)[2:]
    # เติมศูนย์หน้าสตริงที่สั้นกว่า
    zeros = abs(len(bno1) - len(bno2))
    if (len(bno1) > len(bno2)):
        bno2 = zeros * '0' + bno2
    else:
        bno1 = zeros * '0' + bno1
    # แปลงไบนารีเป็นดิกชันนารี
    dict1 = Counter(bno1)
    dict2 = Counter(bno2)
    # เปรียบเทียบดิกชันนารี
    if dict1 == dict2:
        print(p1, p2, "เป็นคู่อะนาการแกรม")
    else:
        print(p1, p2, "ไม่ใช่คู่อะนาการแกรม")

# โปรแกรมหลัก
if __name__ == "__main__":
    n1 = int(input("ป้อนตัวเลขแรก ::>"))
    n2 = int(input("ป้อนตัวเลขที่สอง ::>"))
    anagramoftwonumber(n1, n2)

ผลลัพธ์

ป้อนตัวเลขแรก ::>8
ป้อนตัวเลขที่สอง ::>16
8 16 เป็นคู่อะนาการแกรม
ป้อนตัวเลขแรก ::>3
ป้อนตัวเลขที่สอง ::>2
3 2 ไม่ใช่คู่อะนาการแกรม