길이가 같은 두 줄 사이 의 해밍 거리는 해당 기호가 다른 위치 수입니다.
하자 P길이의 이진 문자열 n과 T길이의 이진 문자열 2n-1. 왼쪽에서 오른쪽으로 순서대로 모든 길이의 하위 문자열 n사이 의 해밍 거리를 계산하여 배열 (또는 목록)에 넣을 수 있습니다.PnT
해밍 거리 시퀀스 예
하자 P = 101및 T = 01100. 이 쌍에서 얻는 해밍 거리의 순서는 2,2,1입니다.
친밀감의 정의
이제 그러한 두 개의 해밍 거리 시퀀스를 고려해 봅시다. 말 x = (0, 2, 2, 3, 0)과 y = (2, 1, 4, 4, 2)사례 등. 우리는 그런 말을 x하고 y있는 close경우 y <= x <= 2*y또는 경우 x <= y <= 2*x. 여기서 스칼라 곱셈과 부등식은 요소별로 취해집니다. 즉 두 시퀀스를 들어, 말을 A하고 B, A <= B iff A[i] <= B[i]모든 인덱스에 대해 i.
해밍 거리의 시퀀스는 이를 비교하는 이러한 방식으로 부분적인 순서를 형성한다는 점에 유의하십시오 . 다시 말해서, 많은 쌍의 서열은 서로 크거나 같거나 작지 않다. 예를 들어 (1,2)및 (2,1).
따라서 위의 예를 사용 (0, 2, 2, 3, 0) <= 2*(2, 1, 4, 4, 2) = (4, 2, 8, 8, 4)하지만 (0, 2, 2, 3, 0)보다 크지 않습니다 (2, 1, 4, 4, 2). 또한 (2, 1, 4, 4, 2)보다 작거나 같습니다 2*(0, 2, 2, 3, 0) = (0, 4, 4, 6, 0). 결과 x와 y하지 서로 가까이 있습니다.
직무
증가 n에서 시작 n=1, 이진 문자열의 모든 가능한 쌍을 고려 P길이 n및 T길이를 2n-1. 있다 2^(n+2n-1)이러한 쌍 따라서 해밍 거리의 많은 시퀀스. 그러나 이러한 많은 시퀀스는 동일합니다. 과제는 두 시퀀스가 서로 가까이 있지 않도록 가장 큰 해밍 거리 시퀀스 세트의 크기를 찾는 것입니다.
코드는의 값당 하나의 숫자를 출력해야합니다 n.
점수
귀하의 점수는 n5 분 안에 내 컴퓨터에서 코드가 도달 하는 최고 점수입니다 (그러나 읽기). 타이밍은 총 실행 시간이 아닌 시간입니다 n.
최적이 아닌 답변에 대한 점수를 제공하려면 최적의 답변을 찾기가 어려울 수 있으므로 약간 미묘한 점수 시스템이 필요합니다. 귀하의 점수는 n이보다 작은 모든 크기에 대해 다른 사람이 더 높은 정답을 게시하지 않은 최고 값입니다 . 예를 들어, 당신이 출력 2, 4, 21하고 다른 사람이 출력 2, 5, 15하면 1다른 사람이에 대한 더 나은 답변을 얻을 때만 점수 를 매 깁니다 n = 2. 당신이 출력 2, 5, 21하면 3그 답변이 모두 최적이기 때문에 다른 사람이 무엇을 출력하든 점수를 매길 것 입니다. 당신은 모든 최적의 답변을 가지고 있다면 분명히 당신은 n당신이 게시 한 최고 점수를 얻을 것이다 . 그러나 귀하의 답변이 최적이 아니더라도 다른 사람이 이길 수 없다면 여전히 점수를 얻을 수 있습니다.
답변 예 및 작동 예
(이 답변은 아직 확인되지 않은 상태입니다. 독립적 인 확인을 받으면 감사하겠습니다.)
ETHproduction 덕분에 :
- n = 1은 2입니다.
- n = 2는 5입니다.
- n = 3은 21을 제공합니다.
좀 n = 2더 자세히 살펴 보자 . 이 경우 해밍 거리 시퀀스의 전체 목록 (여기서는 튜플로 표시)은 다음과 같습니다.
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
우리는 그것이 (0,0)다른 튜플에 가깝지 않다는 것을 알 수 있습니다 . 우리가 가지고가는 경우 사실 (0, 0), (0, 1), (1, 0), (2, 1), (1,2)그 튜플 사항도 가까이 다른 사람의에 없습니다. 이 점수 부여 5를 들어 n = 2.
들어 n = 3별개의 해밍 거리 시퀀스의 전체 목록은 다음과 같습니다
[(0, 0, 0), (0, 0, 1), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 2, 1), (0, 2, 2), (0, 2, 3), (0, 3, 0), (0, 3, 1), (1, 0, 0), (1, 0, 1), (1, 0, 2), (1, 1, 0), (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 0), (1, 2, 1), (1, 2, 2), (1, 2, 3), (1, 3, 0), (1, 3, 1), (1, 3, 2), (2, 0, 1), (2, 0, 2), (2, 0, 3), (2, 1, 0), (2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 2, 0), (2, 2, 1), (2, 2, 2), (2, 2, 3), (2, 3, 1), (2, 3, 2), (2, 3, 3), (3, 0, 2), (3, 0, 3), (3, 1, 0), (3, 1, 1), (3, 1, 2), (3, 2, 0), (3, 2, 1), (3, 2, 2), (3, 3, 2), (3, 3, 3)]
이 48시퀀스 중에서 크기 세트를 선택하여 해당 세트의 21쌍이 서로 가까이 있지 않도록 할 수 있습니다 .
언어와 라이브러리
원하는 언어와 라이브러리를 사용할 수 있습니다. 가능한 경우 코드를 실행할 수 있으면 좋을 것이므로 가능한 경우 Linux에서 코드를 실행 / 컴파일하는 방법에 대한 자세한 설명을 포함하십시오.
내 컴퓨터 타이밍이 64 비트 컴퓨터에서 실행됩니다. 이것은 8GB RAM, AMD FX-8350 8 코어 프로세서 및 Radeon HD 4250이 포함 된 표준 우분투 설치입니다. 또한 코드를 실행할 수 있어야합니다.
최고의 답변
- Christian Sievers의 2, 5, 21, 83, 361 점은 4 점 입니다. C ++
- 점수의 5 가 2, 5, 21, 83 fənɛtɪk 372. 자바 스크립트