r353 vs r354
......
15431543
au, ab를 문자열로 다시 바꿉니다.
15441544
{{{#!if au=au.toString(), ab=ab.toString()
15451545
}}}
1546
tn을 빈 문자열로 초기화합니다. au가 여전히 18자리 숫자일 경우 au의 첫번째 자리를 분리해 내어 tn으로 정의하고 나머지 17자리를 au로 둡니다. 그렇지 않을 경우 (au가 17자리 미만의 숫자가 되었다면) tn은 빈 문자열 그대로 두고 au의 왼쪽을 0(pd)으로 채운 다음 (적어도 19자리가 되는 문자열을) 뒤에서 17번째 자리부터 가지고 와 au로 만듭니다.
1547
{{{#!if ps=false, tn="", ps=(au.length==18), tn=ps?au.substr(0,1):"", au=ps?au=au.substr(1):(pd+au).substr(-17)
1546
au가 여전히 18자리 숫자일 경우 au의 첫번째 자리를 분리해 내어 tn으로 정의하고 나머지 17자리를 au로 둡니다. 그렇지 않을 경우 (au가 17자리 미만의 숫자가 되었다면) tn은 빈 문자열로 두고 au의 왼쪽을 0(pd)으로 채운 다음 (적어도 19자리가 되는 문자열을) 뒤에서 17번째 자리부터 가지고 와 au로 만듭니다.
1547
{{{#!if ps=(au.length==18), tn=ps?au.substr(0,1):"", au=ps?au.substr(1):(pd+au).substr(-17)
15481548
}}}
15491549
ab가 18자리 미만의 숫자가 되었다면 왼쪽을 0으로 채워 18자리 숫자로 만듭니다.
15501550
{{{#!if ab=(ab.length<18)?(pd+ab).substr(-18):ab
......
15531553
{{{#!if au+=ab.substr(0,1)
15541554
}}}
15551555
ab의 나머지 17자리를 앞으로 당긴 다음 "0"을 더합니다.
1556
{{{#!if ab=ab.substr(1,17)+"0"
1556
{{{#!if ab=ab.substr(1)+"0"
15571557
}}}
15581558
여기까지가 자릿수를 한 칸씩 옮기는 과정입니다.
15591559
}}}
......
15901590
br(0으로 나누어떨어짐) 이 걸려있으면 실행하지 않습니다. 그러므로 전체적으로 조건을 !br로 둔 다음 계산을 진행합니다.
15911591
{{{#!if !br
15921592
tw, tx, ty를 정의하고 처리하는 과정은 앞자리에서 몫을 찾는 과정과 동일합니다. 앞의 part 1에서 이미 au, ab를 정수로 만들었으므로 여기에 au, ab를 정수로 만드는 처리를 할 필요가 없습니다.
1593
{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw
1594
}}}{{{#!if ty=ty.toString(), ty.length==19
1595
{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1596
}}}}}}
1593
{{{#!if tw=au/bu, tx=bu*tw, ty=bb*tw, ty=ty.toString(), ps=(ty.length==19), tx=ps?tx+(+ty.substr(0,1)):tx, ty=ps?ty=ty.substr(1):ty
1594
}}}
15971595
ty를 정수로 바꾸는 과정을 아래 if 조건문으로 병합합니다.
15981596
{{{#!if ty=+ty, (tx>au)||((tx==au)&&(ty>ab))
1599
{{{#!if tw-=1, tx=bu*tw, ty=bb*tw
1600
}}}{{{#!if ty=ty.toString(), ty.length==19
1601
{{{#!if tx+=+(ty.substr(0,1)), ty=ty.substr(1,18)
1602
}}}}}}{{{#!if ty=+ty
1597
{{{#!if tw=(tw==0)?0:tw-1, tx=bu*tw, ty=bb*tw, ty=ty.toString(), ps=(ty.length==19), tx=ps?tx+(+ty.substr(0,1)):tx, ty=ps?ty=ty.substr(1):ty, ty=+ty
16031598
}}}}}}
16041599
{{{#!if ty>ab
16051600
{{{#!if au-=1, ab+=+("1"+pd)
......
16181613
{{{#!if au=au.toString(), ab=ab.toString()
16191614
}}}
16201615
ps를 au 자릿수가 18이 되었을 때 true가 되는 논리값으로 정의합니다.
1621
{{{#!if tn="", ps=(au.length==18), ps
1622
{{{#!if tn=au.substr(0,1), au=au.substr(1,17)
1623
}}}}}}
1624
{{{#!if !ps&&(au.length<17)
1625
{{{#!if au=pd+au, au=au.substr(au.length-17,17)
1626
}}}}}}
1627
{{{#!if ab.length<18
1628
{{{#!if ab=pd+ab, ab=ab.substr(ab.length-18,18)
1629
}}}}}}
1630
{{{#!if au+=ab.substr(0,1), ab=ab.substr(1,17)+"0"
1616
{{{#!if ps=(au.length==18), tn=ps?au.substr(0,1):"", au=ps?au.substr(1):(pd+au).substr(-17)
16311617
}}}
1618
{{{#!if ab=(ab.length<18)?(pd+ab).substr(-18):ab
16321619
}}}
1620
{{{#!if au+=ab.substr(0,1), ab=ab.substr(1)+"0"
1621
}}}}}}
16331622
##i=2
16341623
이후부터 과정은 동일합니다. 많아야 소수점 위 36자리, 소수점 아래 36자리 모두를 쓰면 72개이므로 총 72회(for i=0 to i=71)를 진행합니다.
16351624
{{{#!if au=+au, ab=+ab, tz=0, !br&&(tn!="")
......