2 백만 자산에 대한 짧은 URL 서비스를 만들고 싶지만 가능한 가장 짧은 문자 수를 사용하고 싶습니다.다음 문자로 몇 개의 URL을 만들 수 있습니까?
알아 내야 할 수학 방정식은 무엇입니까? 팩토리얼과 관련이 있다는 건 알아요? 가능한 짧은 된 URL =의
이2 백만 자산에 대한 짧은 URL 서비스를 만들고 싶지만 가능한 가장 짧은 문자 수를 사용하고 싶습니다.다음 문자로 몇 개의 URL을 만들 수 있습니까?
알아 내야 할 수학 방정식은 무엇입니까? 팩토리얼과 관련이 있다는 건 알아요? 가능한 짧은 된 URL =의
이이것은 기수 문제가 아니라 지수 적 문제입니다. 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의 답변을 참조하십시오.
번호 (ID 가능한 다른 문자의 수) (URL의 ID의 길이)의 제곱 예를 들어
만 (소문자를 사용하는 경우가있는의 26)이고 URL이 http://domain.com/XXXXX (고유 한 ID가 5 자임) 인 경우 26^5 = 11,881,376 개의 짧은 URL을 만들 수 있습니다.
대소 문자를 사용하는 경우 52 자이므로 52^5 = 380204,032 개의 가능한 짧은 URL 등이 있습니다.
집합에서 허용하려는 문자의 종류와 같은 여러 가지 질문에 대답해야합니다.
모든 문자 및 모든 자릿수? 기본 36 (5 문자는 2mil +에 맞을 수 있음)
대문자와 소문자를 구별합니까? 그러면 기본 62 자리 (4 자)가됩니다.
쉽게 오인 된 문자와 숫자 (예 : i/l 0/o)를 삭제 하시겠습니까? 대략 32 자 (또한 5 자)
HTTP/URI 스펙에 따르면 추가로 다음 예약되지 않은 문자를 사용할 수 있습니다 : ALPHA/DIGIT/"-"/ "."/"_"/ "~"
당신의 기수에 추가로 4 자 추가이 여전히 당신은 최대 4 문자 URL 경로로 끝날 것을 의미하지만, 따라서
Math.log(2000000)/Math.log(66) = 3.4629721616408813
.
@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를 다루는 경우)에서는 매우 중요합니다.
가변 길이 URL의 좋은 점. 그러나 고정 길이 URL의 경우, 내 수학이 정확하다고 주장 할 것입니다.) +1 – jheddings
수학 문제없이이 문제를 해결할 수 있습니다.
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 답변 :
는 정말 감사합니다. 아주 멋지다. – mager