최단 비트 시퀀스가 어떻게 작동하는지 이해하려고합니다. 나는 논리를 의미한다. 나는 그것을위한 프로그램을 만들 필요가 있지만 실제로 가장 짧은 비트 시퀀스가 무엇인지를 모릅니다. 나는 헛되이 Google에 노력했다. 나는이 Question에 관해 알았다. 그러나 나는 그것을 기울인다. 아무도 나에게 그것을 설명하거나 어딘가에서 내가 뒤에있는 논리를 이해할 수있는 나를 안내 할 수 있습니까? 월 드보르작이 코멘트에 지적최단 비트 시퀀스 논리
답변
는, 단순히 기본 -2
에 기록 된 숫자입니다.
예 : [0, 1, 1, 1, 1, 1, 1]
을 고려하십시오. -2
의
지수 2와 동일하지만, 교대 는 : 증상
낮은 지수 먼저 올 비트 시퀀스 표기법(-2)^0 = 1
(-2)^1 = -2
(-2)^2 = 4
(-2)^3 = -8
(-2)^4 = 16
(-2)^5 = -32
(-2)^6 = 64
...
, 즉 통상의 이진수에 비해 반전 차수 .
[0, 1, 1, 1, 1, 1, 1] = 0 * (-2)^0 +
1 * (-2)^1 +
1 * (-2)^2 +
1 * (-2)^3 +
1 * (-2)^4 +
1 * (-2)^5 +
1 * (-2)^6
[0, 1, 1, 1, 1, 1, 1] = 64 - 32 + 16 - 8 + 4 - 2 = 42
나의 benightedness에 대한 미안하지만 어떻게 42에서 0111111을 생성 할 수 있습니까? 네가 여기서 한 짓과는 정반대인가? – Leonidus
초기에는 42 비트의 이진수가 101010이므로 비트 시퀀스를 생성해야하므로 그 번호는 0111111과 관련이 있습니다. – Leonidus
이것은 원래 게시물의 [question you linked] (http://stackoverflow.com/a/13059318/577603)에서 설명했습니다. 거기에 설명 된 세 단계를 수행하면 알고리즘을 사용할 수 있습니다. – ComicSansMS
def solution(A):
n=len(A)
result=0
if n==0:
return -1
for i in range(n):
result+=(A[i]*pow(-2,i))
return result
print solution([1,0,0,1,1])
이 관련 (아래에서 위로)주는? http://stackoverflow.com/questions/818847/the-shortest-binary-sequence-to-cover-dec-numbers-0-99 –
*에 대한 가장 짧은 비트 시퀀스 *? 가장 짧은 시퀀스 * 마침표 *는 빈 시퀀스입니다. 나는 그것이 당신이 원하는 것이 아니라고 생각합니다. – harold
@harold 예를 들어, 42에 대한 최단 비트 시퀀스는 [0,1,1,1,1,1,1]입니다. 나는 그 배후의 논리를 이해하고 싶다. – Leonidus