더 이상 이 블로그는 운영되지 않습니다. 새 블로그로 가 주세요.
Whirl 인터프리터
2005/01/06 AM 01:05 | 컴퓨터/프로그래밍 언어 | 4 comments | 0 trackbacks | AllBlog: vote, to pocket
요즘은 이런 물건 만드는 데 시간 투자할 수 있어서 (사실 그 시간 빼고는 멍하니 있다는 게 문제지만 -_-) 좋다. 이번 작품(이라고 하긴 뭣하고;)은 Whirl이라는 아주 골 터지는 프로그래밍 언어의 인터프리터이다.
#include/* by Kang Seonghoon <tokigun@gmail.com> */<stdio.h>
FILE*f;int P[99999],*d=P,*p=P,U[99999],*u=U,q,s,t,r[2],v[2],
w[2];int main(int i,char**I){if(i-2)return!puts("TokigunStu"
"dio Whirl Interpreter by Kang Seonghoon <tokigun@gmail.com"
">");f=fopen(*++I,"r");if(!f)return!!printf(".error: File N"
"ot F" "ound -- %s \n", *I ); 42; while(~(*d=
fgetc( f)))if(( *d |1)- 49); else {*d ++ -=48;}for(fclose( f) ;p <d; q=!( *p++ ||q )){if(*p)v[
s]=(v[s ]- r[ s]+ 13)% 014; else {r[ s] ^=2;if(q){t
# define O(n) else if(! (v[s ]-n )) /*2k50106*/
=w[s];if( s) {if(0 );O( 1) t= *u; O( 2)*u=t
;O(3)t+=*u;O(4)t*=*u;O(5)t/=*u;O(6)t=0;O(7)t=t<*u;O(8)t=t>*u
;O(9)t=t==*u;O(10)t=!t;O(11)t=-t;}O(1)return 0;O(2)t=1;O(3)t
=0;O(4)t=*u;O(5)*u=t;O(6)p+=t-1;O(7)u+=t;O(8)t=*u&&!!t;O(9)p
+=*u?t-1:0;O(10)t?printf("%d",*u):scanf("%d",u);O(11)!t?(*u=
getchar()):putchar(*u);w[s]=t;s=!s;if(p<P)p=P;}}}return 0;;}
하리마 모양으로 도전하였으나 중간에 코드 수정을 하는 바람에 꼬여 버려서 때려 치고 간단 간단하게 했다. 아, 그리고 Whirl 언어 개발자한테도 (아주 최악의 영어로) 메일 보내 줬으니... 근데 답장이 올라나. -_-;;;
obfuscation collection에도 올라 와 있다.
#include/* by Kang Seonghoon <tokigun@gmail.com> */<stdio.h>
FILE*f;int P[99999],*d=P,*p=P,U[99999],*u=U,q,s,t,r[2],v[2],
w[2];int main(int i,char**I){if(i-2)return!puts("TokigunStu"
"dio Whirl Interpreter by Kang Seonghoon <tokigun@gmail.com"
">");f=fopen(*++I,"r");if(!f)return!!printf(".error: File N"
"ot F" "ound -- %s \n", *I ); 42; while(~(*d=
fgetc( f)))if(( *d |1)- 49); else {*d ++ -=48;}for(fclose( f) ;p <d; q=!( *p++ ||q )){if(*p)v[
s]=(v[s ]- r[ s]+ 13)% 014; else {r[ s] ^=2;if(q){t
# define O(n) else if(! (v[s ]-n )) /*2k50106*/
=w[s];if( s) {if(0 );O( 1) t= *u; O( 2)*u=t
;O(3)t+=*u;O(4)t*=*u;O(5)t/=*u;O(6)t=0;O(7)t=t<*u;O(8)t=t>*u
;O(9)t=t==*u;O(10)t=!t;O(11)t=-t;}O(1)return 0;O(2)t=1;O(3)t
=0;O(4)t=*u;O(5)*u=t;O(6)p+=t-1;O(7)u+=t;O(8)t=*u&&!!t;O(9)p
+=*u?t-1:0;O(10)t?printf("%d",*u):scanf("%d",u);O(11)!t?(*u=
getchar()):putchar(*u);w[s]=t;s=!s;if(p<P)p=P;}}}return 0;;}
하리마 모양으로 도전하였으나 중간에 코드 수정을 하는 바람에 꼬여 버려서 때려 치고 간단 간단하게 했다. 아, 그리고 Whirl 언어 개발자한테도 (아주 최악의 영어로) 메일 보내 줬으니... 근데 답장이 올라나. -_-;;;
obfuscation collection에도 올라 와 있다.
TrackBack URL: http://sapzil.info/soojung/trackback.php?blogid=290
Comment: 토끼군 (2005/01/06 AM 11:08)
인클루드: 그냥 쓸 만한 모양을 추천해 주세요. -.-
Comment: 미친병아리 (2005/01/08 PM 10:53)
이야.. 이런 것두 다 있군요.. 흐흐흐..
Comment: 토끼군 (2005/01/08 PM 11:13)
미친병아리: 저거는 옛날 버전이고 obfuscation collection에 가면 새 버전을 볼 수 있습니다. :)
Comment: 인클루드 (2005/01/06 AM 07:12)
역시 그래도 텐마가 최고에용 =3=3