>> Edit article
이름
제목
패스워드
### 부가 설명 ## split 에서 숫자를 세는 방식 우선 십진수와 형식을 비교해 봅니다. 1자리수에서 2자리수로 넘어가는 형태 0 1 2 3 4 ... 9 10 11 ... aa ab ac ad ae ... az ba bb ... 여기서 a는 숫자 0, b는 1 ... z는 25가 되고 26가지가 됩니다. 따라서 split에서 세는 방법은 26진수가 됩니다.(어찌 보면 당연한 것을 --;;) 그렇지만 aa는 실제로 0이 아니라 1입니다. 그래서 실제로는 위의 형태가 아래처럼 한자리씩 밀려나는 형태로 바뀝니다. 0 1 2 3 4 ... 9 10 11 ... ? aa ab ac ad ay az aa 1 2 3 4 ... 25 26 27 수식으로 표현하자면 split에서 사용되는 26진법은 십진수로 이런 방식으로 치환됩니다. yza --> (26^2 * 24) + (26^1 * 25) + (26^0 * 0) + 1 그런데 문제가 있습니다. .... yx yy yz .. za .. zz 여기까진 문제가 없습니다만.. 다음 숫자 baa 가 (이게 맞긴 한걸까 --;;) 만들어진다면... 알파벳 순서로는 숫자의 순서가 뒤바뀌게 됩니다. 그래서 split에서는 좀더 이상한(--;;)형태로 숫자를 셉니다. aa ab ac ... yz # 십진수로 650(25*26)까지 zaaa zaab zaac ... zyzz # + 25*26*26 zzaa zzab zzac ... zzyz # + 25*26 zzzaaa zzzaab zzzaac ... zzzyzz # + 25*26*26 . . . 조금 변경해서 쓰면 / / / / / aa / aa / ac ... / yz z/aaa z/aab z/aac ... z/yzz zz/ aa zz/ aa zz/ ac ... zz/ yz zzz/aaa zzz/aab zzz/aac ... zzz/yzz 이렇게 일정한 패턴이 계속됩니다. 이제는 알파벳순과 숫자순서가 같게됩니다. 세는 방식이 달라진 만큼 십진수로 바꾸는 방법도 조금 달라집니다. 우선 "/" 앞에 있는 'z'의 갯수에 따라 이전 까지 있던 숫자가 달라지게 되는데.. "/" 앞에 있는 z의 갯수를 zt라고 자연수라고 없으면 : 25*26 * 0 + 25*26*26 * 0 # 0 + 0 = 0 z : 25*26 * 1 + 25*26*26 * 0 # 1 + 0 = 1 zz : 25*26 * 1 + 25*26*26 * 1 # 1 + 1 = 2 zzz : 25*26 * 2 + 25*26*26 * 1 # 2 + 1 = 3 . . . zt : 25*26 * (zt-(zt/2)) + 25*26*26 * (zt/2) # zt-(zt/2) + zt/2 = zt # zt/2 에서의 나머지는 버립니다. 이렇게 되고 우선 z가 한 개면 zaaa = (25*26*1 + 25*26*26*0) + (26^2*0 + 26^1*0 + 26^0*0 + 1) zyzz = (25*26*1 + 25*26*26*0) + (26^2*24 + 26^1*25 + 26^0*25 + 1) 이됩니다. 좀 색다른 방식이어서 이것때문에 스크립트가 엄청길어졌습니다. 그렇지만 두자의 숫자로 표현할 수 있는 것이 십진수는 100가지인데 반해 split방식은 650개까지 표현 할 수 있다는데 의미를 두어야할 것 같습니다.
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved