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

โปรแกรมแปลง Gray Code สำหรับตัวเลขที่กำหนดใน Python


มีตัวเลข n หา Gray code ของ n (nth Gray code) Gray code เรียงเลขไบนารีที่ติดกันต่าง 1 บิต

เช่น n=12 (1100) ให้ 10 (1010)

ขั้นตอนการแก้ปัญหา

  • สูตร: gray(n) = n ^ (n >> 1) หรือแบบ Reclusive
  • หากำลังสอง ใหญ่สุด ≤ n เรียกว่า x
  • gray(n) = x + gray(2*x - n - 1)
  • Base case: n=0 คืน 0

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

class Solution:
    def solve(self, n):
        if n == 0: return 0
        x = 1
        while x*2 <= n: x *= 2
        return x + self.solve(2*x - n - 1)

ob = Solution()
n = 12
print(ob.solve(n))

อินพุต

12

เอาต์พุต

10