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

ตรวจสอบว่าการแสดงเลขฐานสองของตัวเลขมีจำนวนเท่ากับ 0 และ 1 ในบล็อกใน Python . หรือไม่


สมมติว่าเรามีตัวเลข เราต้องตรวจสอบว่าการแสดงเลขฐานสองของ num มีจำนวนบล็อกต่อเนื่องกันเป็น 0s และ 1s หรือไม่ เราต้องจำไว้ว่า 0 และตัวเลขที่มี 1 ทั้งหมดนั้นไม่ถือว่ามีจำนวนบล็อคของ 0 และ 1

ดังนั้น หากอินพุตมีค่าเท่ากับ num =455 ผลลัพธ์จะเป็น True เนื่องจากการแสดงเลขฐานสองของตัวเลขนี้คือ 111000111

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • bin_form :=รูปแบบไบนารีของ num
  • one_count :=ชุดใหม่
  • นับ :=1
  • สำหรับฉันในช่วง 0 ถึงบิตนับของ bin_form - 1 ทำ
    • ถ้า bin_form[i] เหมือนกับ bin_form[i + 1] แล้ว
      • นับ :=นับ + 1
    • มิฉะนั้น
      • แทรก นับเป็น one_count
      • นับ :=1
  • ถ้าขนาด one_count เท่ากับ 1 แล้ว
    • คืนค่า True
  • คืนค่าเท็จ

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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

def solve(num):
   bin_form = bin(num).replace("0b", "")
   one_count = set()
   count = 1
 
   for i in range(len(bin_form)-1):
      if bin_form[i] == bin_form[i + 1]:
         count += 1
      else:
         one_count.add(count)
         count = 1
 
   if len(one_count) == 1:
      return True
   return False
 
num = 455
print(solve(num))

อินพุต

455

ผลลัพธ์

True