
표준 입력(stdin)으로 입력되는 내용들을 받아서 md5 checksum을 계산해 주는 프로그램입니다. (파일은 pipe를 사용해서 입력받습니다) Funge로도 실제 사용되는 프로그램을 짤 수 있다는 걸 보여 주는 좋은 사례라고 볼 수 있겠습니다. -_-;;; 아, 그런데 실용성은 없습니다 :D
코드 크기를 줄이기 위해서 온갖 꼼수를 사용했습니다. 한 가지 예를 들자면, 이 프로그램은 md5 계산을 위해 필요한 대부분의 테이블을 직접 생성해서 사용합니다.
^()() TokigunStudio Funge MD5 Calculator (2004.12.28)
('_') by Kang Seonghoon <tokigun@gmail.com>
============================================================
HMRWFJOUELQXGKPV0123456789abcdef(q),a$<=67Cw6rOg7YyMO+OFgTs=
/**884,g3++88%*28,g3++88/*28:A*f+89<v_^###;v_$#;$#-:#d<!>;:\
0g++30g40g50g20p50p40p30p60g1+60pv;^>1+:0g4>1-\:;/\>70gzk*/3
2p07-g07*84Ag00*kg072kg07g02p07-*3#5 dg3+*4/*28\<\/^2kg071g0
2*%80g*70g+82*%;>pe0g1+ev;2g+++0#j0#9gA20p60g:4%^>g60g1g60g8
bp0aAg00+g02g0a<^0cp0dAg0z0+g05g0dAg 00+g04g0cp\b0Ag00+g03g0
Eg00g05p087p070^#;vvj/$<p>5#;70p380p 30g40gE50gE2^2zEg04Og03
g04Eg00g05p085p071<>30g00gE50gA30g40 gAO070p180p2^2OAg05g03A
0p\2p1+;p03g0bp02g0a$$<^+88g06;v;<p0 60p05g0dp04g0c;>$f0g4+f
0f***;#48<8p0f+3g0f03_^# -*82::<>#0_^>;#\-1p0f-1g0f_^#:\+g2g
v>*b+f*1+f*d+d0p0e0p0f0p>e0g10g-^<tokigun>**5+f*9+f*d+-c0pf8
<^;v*f+8fp0az<;f+8*f+c*f;vzd*f+8*f+1*f+2*af(q#4"ORTH"<;+c*f+
0pv>8+f*3+f*1+f*4+f*2+f*6+f*2+b0p8kf7k*ff^>g2p884**/#$30g1+3
03<p03\*8p01<^d*f+2*f+4*f<>:#;v>#;_:0\2pv<^03%**488:_^#-g02g
>10p#;~10vv;^/*88+*98:g01p02+8<^!-g02:+1<g0<>1p1+:88*-#v_$)0
^+1g01p2g<>10g8+88*%88*\-10g+20p882**10g2p1^^\IMg01g02V BF+<
>"PDPF"4#q(fa+f*2+f*f*d+f*c+f*d+f*8+f*00p2F84*FY10p20p0>::1^
이 프로그램을 실행하기 위해서는 FPDP, ORTH fingerprint를 지원하는 Befunge-98 인터프리터가 필요합니다. 표준 입력으로 md5 checksum을 계산할 내용을 넣어 주면 계산을 시작합니다. 파일을 입력받기 위해서는 아래와 같이 pipe를 사용하면 됩니다.
$ cat < text Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna ali qua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis au te irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. $ funge98 md5calc.bf < text fa5c89f3c88b81bfd5e821b0316569af
참고로 Windows 환경에서는 pipe가 텍스트 모드로 동작합니다. 다른 말로 하면, 어떤 파일이든 EOF를 파일의 끝으로 인식해 버린다는 것을 유의하시길 바랍니다. :( (위 결과를 실제로 테스트하려면 이 파일을 받아서 테스트하시길 바랍니다. 문단의 길이는 446바이트이고 개행문자와 EOF 문자는 전혀 포함되어 있지 않습니다.)
이 프로그램은 직접 돌려 보시면 알겠지만 상당히 느립니다. 제 노트북에서 제가 만든 PyFunge로 실행했을 경우 위 결과가 나올 때까지 약 28초 걸립니다. (PyFunge가 느린 편이긴 합니다. -_-;) 진지하게 사용하려는 생각은 제발 하지 말아 주세요. ;;;