일반적으로, 우리는 2의 거듭 제곱으로 계수
0
또는1
각 항에 대해 숫자를 대입하여 이진수로 숫자를 분해합니다 .
25 = 1*16 + 1*8 + 0*4 + 0*2 + 1*1
0
and 의 선택1
은 ... 이진이 아닙니다. 우리는 2의 거듭 제곱으로 계수를 사용 하거나 대신 계수를 사용하여 실제 이진 확장을 수행합니다 .1
-1
25 = 1*16 + 1*8 + 1*4 - 1*2 - 1*1
이제 이 진 보인다.
양수가 주어지면 다음을 알 수 있습니다.
- 모든 홀수에는 무한히 많은 이진 확장이 있습니다
- 모든 짝수에는 진정한 이진 확장이 없습니다
진정한 바이너리 확장이 잘 정의 된 것이어야하기 때문에, 우리는로 확장을 필요 이상 짧은 길이 즉,.
양수, 홀수 정수가 주어지면 n
가장 큰 자릿수에서 가장 작은 자릿수로 (또는 역순으로) 이진 확장을 반환합니다.
규칙 :
- 이대로 코드 골프가능한 한 가장 짧은 바이트 수로이 작업을 수행해야 합니다. 내장이 허용됩니다.
- 계수를 나타내거나 나열 할 수있는 모든 출력은 허용됩니다 : 배열, 분리자가있는 계수 문자열 등.
- 표준 골프 허점이 적용됩니다.
- 프로그램은 언어의 표준 정수 크기 내의 값에 대해 작동해야합니다.
테스트 사례
25 -> [1,1,1,-1,-1]
47 -> [1,1,-1,1,1,1]
1 -> [1]
3 -> [1,1]
1234567 -> [1,1,-1,-1,1,-1,1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,1,1]
0
대신 인쇄되는 경우 내 잘못이 아닙니다 -1
. 비트를 수신 한 발신자는 그 의미를 알고 있습니다. (이것은 32 비트의 유효 비트가있는 경우에만 오른쪽 회전이 작동하기 때문에 여전히 사소한 비트 조작 연습입니다. 예를 들어 5 비트 숫자는 5의 회전 너비가 필요합니다.)
111-1-1
대한 유효한 출력 25
입니까?