미궁 게임의 일종으로 소개한 것에서 추측해볼 수 있듯, 미궁 게임을 알던 사람이 본다면 0 단계 문제는 매우 쉽게 접근할 수 있다. 글을 쓰면서도 뭘 더 써야할지 잘 모르겠어서 하루 넘게 고민했다. 그래서 파이썬 관련해서 꼼수(?)를 같이 포스팅하려고 한다. 명령 프롬프트/터미널 등의 쉘 한정이긴 하겠지만 말이다ㅜㅜ
무튼 아래 사진은 level 0 의 문제이다.
매 단계마다 다 줄지는 잘 모르겠지만 무튼 힌트가 주어졌으니 참고하자. URL 주소를 바꿔보길 권하고 있다. 플로피 디스켓 수준의 유물급(...)인 CRT 모니터에 메모지를 붙이고 이 적은 것 같다.
URL 주소를 보면 http://www.pythonchallenge.com/pc/def/0.html 이라고 적혀있다. 뭔가 숫자가 관련된 것 같아서 숫자 부분인 0을 1로 바꿔서 넣어보면 2의 38승은 1보단 더 크지 않겠냐면서 막 따진다(!!!) 틀렸다고 실망하진 말자. 앞으로 갈 길이 멀다. 이정도 틀린것으로 굴복할 순 없다. 심지어 제작자도 숫자를 넣어볼 것을 예상하지 않았는가? 예상 답변을 입력했다는 것만으로도 이번 게임을 즐길 수 있는 조건을 충분히 만족하는 훌륭한 사람이다.
무튼 2의 38승을 계산해얄것 같은데 이 어마무시한 수는 10진법으로도 12자리수이다. 당연히 2진법으로는 39자리수이고 int 범위를 간단히 넘겨버린다. 다른 언어들을 이용한다고 했을때 막상 계산하려고 덤비면 overflow를 일으킬 위험이 높은 수이지만 파이썬에선 그렇지 않다. 큰 수라도 계산할 수 있게끔 설계돼있기 때문이다.
명령 프롬프트나 터미널에서 위와 같은 명령어를 그대로 치면 python 프로그램을 실행시키는데, 그 명령어를 'print 2**38'로 받아서 곧장 결과를 알려준다. -c 옵션을 주는 것으로 다음 입력으로 받은 문자열을 그대로 파이썬 명령어처럼 인식하라는 뜻으로 해석시킬 수 있다. 가끔 명령 프롬프트에서 제대로 동작하지 않는다면 현재 있는 디렉토리에서 파이썬 프로그램을 곧장 불러올 수 없음을 의미한다. path 설정을 하지 않아서 생긴 문제인데 이는 내가 윈도우를 쓰지 않아서 정확하게는 기억이 나질 않으니 (사실 찾기 귀찮다 ㅜㅜ) "python path commend environments" 같은 명령어로 한 번 찾아보길 바란다. 이참에 영어 공부도 되고 좋을 것이다.
혹은 더 귀찮고 어렵게 구할 수도 있다. 진법 계산기를 만들어놓고 2진법 100000000000000000000000000000000000000을 10진법으로 바꾸면 된다.....
아무리 큰 수라도 계산은 할 수 있게 만든 것에 착안해서 대놓고 큰수 계산에 파이썬을 함부로 사용하는 것은 위험한 짓이다. 참고 삼아 말하는건데 컴퓨터 메모리를 다 쓰고 싶다면 100만 번째 피보나치 수를 구해보도록 하자. 경고하는데, 지금까지 했던 작업들을 미리 다 저장해두길 바란다. 재부팅해얄지도 모른다ㅎ