2012-06-25 2 views
1

기본적으로 2 차원 공간에서 점의 고유 식별 번호를 계산하는 수식을 계산하려고합니다. 조건 : f (x, y) = c이면 f (X1, Y1) = c가되도록x와 y가 모두 정수이고 c도 정수 여야합니다 정확성이 의심스럽고 해시 테이블에서 키로 사용하기에 적합한 지 확실하지 않기 때문에 적합합니다.ID를 2 차원 공간의 한 점으로 계산하는 공식이 필요합니다.

+1

이것은 단순한 것에서 불가능한 것일 수 있습니다. x와 y의 정수이고 특정 범위가 있습니까? –

+0

[math.stackexchange.com] (http : //math.stackexchange.com)에 더 적합 –

+0

x, y에 대한 상한선과 하한선이있는 경우이 같은 것을 시도 할 것입니다 (예 : 0

답변

1

이것은 물론 아주 사소한 것입니다. 알고리즘을 개략적으로 설명하겠습니다. 코딩을 맡은 사람은 누구나 할 수있는 연습 문제로 남겨 둘 것입니다.

종이를 사용하여 큰 종이를 만드는 것이 좋습니다. 그 위에 사각형의 격자를 그립니다. 열에 최소값에서 최대 값까지의 수를 레이블링하십시오. 따라서 정수가 1에서부터 큰 값이면 큰 수입니다. 동일한 방법으로 행에 레이블을 지정하십시오. 행과 열에 1을 붙이기 시작했다고 가정하고,이 격자의 왼쪽 위 셀은 (1,1)에있게됩니다. 012) 셀 (2,1) 쓰기 2, (1,2) 쓰기 3, (1,3) 쓰기 4, (2, 2) 5를 쓰십시오.

이제 2D 정수 'space'에서 1D 정수 공간으로의 변환 가능 맵핑이 있습니다.

Cantor 덕분에 도움을 받으 셨습니다.

+0

양성자 수를 열거하는 것과 비슷하지만 제외 할 수있는 분수를 계산한다는 점만 제외하고는 마찬가지입니다. – wberry

+0

디코딩은 대각선을 계산해야한다는 점을 감안하면 조금 까다 롭습니다. 입력에 대해 가장 낮은 삼각형 수인 'T'를 식별하고 'n (n + 1)/2 = T'를 풀면됩니다. – wberry

관련 문제