### 부가 설명
## 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개까지 표현 할 수 있다는데 의미를 두어야할 것 같습니다.