Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 주어진 숫자에 대한 그레이 코드를 변환하는 프로그램

<시간/>

숫자 n이 있다고 가정하고 해당 숫자에 대한 그레이 코드(즉, n번째 그레이 코드)를 찾아야 합니다. 우리가 알고 있듯이 그레이 코드는 각 연속 숫자의 값이 정확히 1비트씩 다르도록 이진수를 정렬하는 방법입니다. 일부 그레이 코드는 다음과 같습니다. [0, 1, 11, 10, 110, 111 등]

따라서 입력이 n =12와 같으면 12가 이진법으로 (1100)이므로 출력은 10이 되며 해당 회색 코드는 (1010)이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • solve() 함수를 정의합니다. n
  • 소요됩니다.
  • n이 0과 같으면
    • 0을 반환
  • x :=1
  • 동안 x * 2 <=n, do
    • x :=x * 2
  • return x + solve(2 * x - n - 1)

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

예시

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