
16진법 원주율을 무한히 계산해 주는 프로그램입니다. 재귀 호출을 사용합니다.
Q=lambda o,O:Q(o+1,P([O[1],o*o*O[0]+(2*o+1)*O[1],O[3],o*o*O[2]+
(2*o+1)*O[3]]));P=lambda O:O[0]//O[2]==O[1]//O[3]and(sys.stdout
.write("0123456789ABCDEF"[O[0]//O[2]]),P([16*(O[0]%O[2]),16*(O[
1]%O[3])]+O[2:]))[1]or O;import sys;Q(2,[4,12,1,4])#tokigun2004
단순히 파이썬 인터프리터를 사용해서 실행하면 됩니다. 무한히 재귀 호출을 하기 때문에 얼마 정도 출력하다가 파이썬 인터프리터가 자동으로 실행을 끊어 버립니다만 처음 500자리 정도는 충분히 볼 수 있습니다.
$ python pihex.py 3243F6A8885A308D313198A2E03707344A4093822299F31D0082EFA98EC4E6C89452821E638D0137 7BE5466CF34E90C6CC0AC29B7C97C50DD3F84D5B5B54709179216D5D98979FB1BD1310BA698DFB5A C2FFD72DBD01ADFB7B8E1AFED6A267E96BA7C9045F12C7F9924A19947B3916CF70801F2E2858EFC1 6636920D871574E69A458FEA3F4933D7E0D95748F728EB658718BCD5882154AEE7B54A41DC25A59B 59C30D5392AF26013C5D1B023286085F0CA417918B8DB38EF8E79DCB0603A180E6C9E0E8BB01E8A3 ED71577C1BD314B2778AF2FDA55605C60E65525F3AA55AB945748986263E8144055CA396A2AAB10B 6B4CC5C341141E8CEA15486AF7C72E993B3EE1411636FBC2A2BA9C55D741831F6CE5C3E169B87931 EAFD6BA336C24CF5C7A325381289586773B8F48986B4BB9AFC4BFE81B6628219361D809CCF Traceback (most recent call last): File "<stdin>", line 1, in <lambda> File "<stdin>", line 1, in <lambda> File "<stdin>", line 1, in <lambda> ... File "<stdin>", line 1, in <lambda> File "<stdin>", line 1, in <lambda> File "<stdin>", line 2, in <lambda> File "<stdin>", line 2, in <lambda> RuntimeError: maximum recursion depth exceeded
참고로 처음의 3243F6A...는 π = 3.243F6A...(16) = 3.1415926...임을 나타냅니다.
재귀호출 한도를 높이려면 코드 앞에 import sys; sys.setrecursionlimit(1000000)를 추가하면 됩니다. 단, 파이썬이 죽어 버려도 책임 못 집니다. :p