2013-05-21 1 views
4

최단 비트 시퀀스가 ​​어떻게 작동하는지 이해하려고합니다. 나는 논리를 의미한다. 나는 그것을위한 프로그램을 만들 필요가 있지만 실제로 가장 짧은 비트 시퀀스가 ​​무엇인지를 모릅니다. 나는 헛되이 Google에 노력했다. 나는이 Question에 관해 알았다. 그러나 나는 그것을 기울인다. 아무도 나에게 그것을 설명하거나 어딘가에서 내가 뒤에있는 논리를 이해할 수있는 나를 안내 할 수 있습니까? 월 드보르작이 코멘트에 지적최단 비트 시퀀스 논리

+0

이 관련 (아래에서 위로)주는? http://stackoverflow.com/questions/818847/the-shortest-binary-sequence-to-cover-dec-numbers-0-99 –

+4

*에 대한 가장 짧은 비트 시퀀스 *? 가장 짧은 시퀀스 * 마침표 *는 빈 시퀀스입니다. 나는 그것이 당신이 원하는 것이 아니라고 생각합니다. – harold

+0

@harold 예를 들어, 42에 대한 최단 비트 시퀀스는 [0,1,1,1,1,1,1]입니다. 나는 그 배후의 논리를 이해하고 싶다. – Leonidus

답변

2

는, 단순히 기본 -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 
+0

나의 benightedness에 대한 미안하지만 어떻게 42에서 0111111을 생성 할 수 있습니까? 네가 여기서 한 짓과는 정반대인가? – Leonidus

+0

초기에는 42 비트의 이진수가 101010이므로 비트 시퀀스를 생성해야하므로 그 번호는 0111111과 관련이 있습니다. – Leonidus

+0

이것은 원래 게시물의 [question you linked] (http://stackoverflow.com/a/13059318/577603)에서 설명했습니다. 거기에 설명 된 세 단계를 수행하면 알고리즘을 사용할 수 있습니다. – ComicSansMS

-1
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])