2009-11-01 4 views
3

2 백만 자산에 대한 짧은 URL 서비스를 만들고 싶지만 가능한 가장 짧은 문자 수를 사용하고 싶습니다.다음 문자로 몇 개의 URL을 만들 수 있습니까?

알아 내야 할 수학 방정식은 무엇입니까? 팩토리얼과 관련이 있다는 건 알아요? 가능한 짧은 된 URL =의

답변

11

이것은 기수 문제가 아니라 지수 적 문제입니다. x 가능한 문자 수 인 경우

, 당신은 y에 대해 다음 방정식을 해결해야합니다

x^y = 2000000 

모든 숫자와 대소 문자를 구분 알파 [0-9A-Za-z]를 사용하려는 경우, 당신은 62 개 가능한 값을 가지고있다. 이것은 당신이 해결해야 할 의미 : 물론

 62^y = 2000000 
y*log(62) = log(2000000) 
     y = log(2000000)/log(62) 
     y = 3.5154313828... 

, 당신은 당신의 URL에서 3.5 문자를 가질 수 없습니다, 그래서 당신은 당신이 당신의 URL의에 사용하는 문자 집합을 변경하려면 당신은 단순히, 4 필요 세트의 값 수를 사용하여 위의 문제를 해결하십시오.

참고이 방정식을 해결하면 고정 길이 URL을 가정합니다. 가변 길이 URL은 Rob의 답변을 참조하십시오.

+0

는 정말 감사합니다. 아주 멋지다. – mager

1

번호 (ID 가능한 다른 문자의 수) (URL의 ID의 길이)의 제곱 예를 들어

만 (소문자를 사용하는 경우가있는의 26)이고 URL이 http://domain.com/XXXXX (고유 한 ID가 5 자임) 인 경우 26^5 = 11,881,376 개의 짧은 URL을 만들 수 있습니다.

대소 문자를 사용하는 경우 52 자이므로 52^5 = 380204,032 개의 가능한 짧은 URL 등이 있습니다.

1

집합에서 허용하려는 문자의 종류와 같은 여러 가지 질문에 대답해야합니다.

모든 문자 및 모든 자릿수? 기본 36 (5 문자는 2mil +에 맞을 수 있음)

대문자와 소문자를 구별합니까? 그러면 기본 62 자리 (4 자)가됩니다.

쉽게 오인 된 문자와 숫자 (예 : i/l 0/o)를 삭제 하시겠습니까? 대략 32 자 (또한 5 자)

0

HTTP/URI 스펙에 따르면 추가로 다음 예약되지 않은 문자를 사용할 수 있습니다 : ALPHA/DIGIT/"-"/ "."/"_"/ "~"

당신의 기수에 추가로 4 자 추가

이 여전히 당신은 최대 4 문자 URL 경로로 끝날 것을 의미하지만, 따라서

Math.log(2000000)/Math.log(66) = 3.4629721616408813 

.

5

@jheddings는 가깝고 올바른 대답을 얻었지만 수학은 정확하지 않았습니다. 특정 길이의 모든 문자의 순열에 국한되지 않음을 잊지 마십시오. 길이 1 - Y 자의 URL을 활용할 수도 있습니다. 따라서이 합계의 닫힌 값을 원합니다.

x + x^2 + x^3 + ...+ X^Y는, 그 합계 닫힌 형태 2,000,000

다행히도

있다 =

X + X^2 + X^3 + ... + X^Y = X * (X^Y - 1)/(x-1) = 2000000

x는 우리 범위의 가능한 문자 수입니다. 당신이 말한대로, 3.5

2000000 = (62^(y+1) - 62)/(62-1) 
2000000 = (62^(y+1) - 62)/(61) 
2000000 * 61 = 62^(y+1) - 62 
122000000 = 62^(y+1) - 62 
122000000 + 62 = 62^(y+1) 
122000062 = 62^(y+1) 
log(122000062) = (y+1) 
log(122000062)/log(62) = y+1 
4.511492 = y+1 
3.511492 = y 

그리고 : 단순 위해를 들어, 그것은 단지 소문자, 대문자, 숫자 (26 + 26 + 10 = 62)

그런 다음 우리는 다음과 같은 식을 얻을 포함되어 가정하자 문자는 불가능하므로 4가 필요합니다. 틀림없이 차이는이 경우 중요하지 않습니다. 그러나 특정 시나리오 (특히베이스 2를 다루는 경우)에서는 매우 중요합니다.

+0

가변 길이 URL의 좋은 점. 그러나 고정 길이 URL의 경우, 내 수학이 정확하다고 주장 할 것입니다.) +1 – jheddings

1

수학 문제없이이 문제를 해결할 수 있습니다.

26 + 26 + 10 = 62 문자

Try 1. 62 = 62 
Try 2. 62*62 = 3,844 
Try 3. 62*62*62 = 238,328 
Try 4. 62*62*62*62 = 14,776,336 

그래서 4 답변 :

관련 문제