date = new Date();
year = date.getYear();
pass = 1337;
for(i = 1; i <= year; i++)
{
pass += year * i * year;
}
if(pass == 318338237039211050000)
{
alert("Good job!");
window.location.href = year + ".php";
}
else
{
alert("Sorry, did you fail already?!");
window.location.href = "./index.php";
}
year을 구해야된다. 그냥 브루트포싱인것 같아서 파이썬으로 돌리려다가 숫자가 엄청나게 크다는걸
발견했다.
for i in range(0,50000):
pass_ = 0
for j in range(1,i):
pass_ += i*j*i
if pass_==318338237039211050000:
print 'answer =',i
print pass_
대충 이런식으로 50000만 돌려봐도 결과 pass_는 위의 318338237039211050000보다 현저하게
작은데 시간은 엄청나게 오래걸린다. 반복문은 자바스크립트가 훨씬 빠르게 돌아가므로 자바스크립트로
돌리기로 했다. 위 파이썬 코드와 비슷한 자바스크립트 코드를 짜본 결과
반복문을 10만번을 돌렸는데도 파이썬 1만번보다 더 빠른 속도로 결과가 출력된다.
완벽하게 코드만 돌리면 나오는 이진 탐색으로 짜려고 했는데 시간이 오래걸린다. 그냥 내가 눈대중으로
어느정도 더 크게, 또는 작게 하는 형식으로 하는게 훨씬 빠를것같다. 그래서 그렇게 했음...
값을 높이고 내리고 해봤더니 158847일때 결과값이 나왔다.
<script> year = 158847; pass = 1337; for(i = 1; i <= year; i++) { pass += year * i * year; if(pass == 318338237039211050000) { document.write("i="+i+" year="+year+" pass="+pass+"
"); alert("Good job!"); } } </script>
'webhacking > client' 카테고리의 다른 글
Net-Force javascript 6 (0) | 2014.12.04 |
---|---|
Net-Force javascript 1~5 (0) | 2014.12.03 |
Enigma Group basic/javascript 11 (0) | 2014.11.01 |
Enigma Group basic/javascript 10 (0) | 2014.11.01 |
Enigma Group basic/javascript 9 (0) | 2014.11.01 |