(2005-01-07) 본래 Whirl 사이트에 올라와 있던 "Hello, world!" 코드는 명령 수가 2만 5천개가 넘어서 쓸데 없이 길었습니다. 이 코드는 이를 1350개로 줄입니다. (뒤의 서명 부분은 코드에 영향을 미치지 않습니다.) 모든 코드는 손으로 짠 뒤 간단한 후처리 코드를 돌리는 식으로 수행했으며, 필요 없는 명령이라도 코드를 줄이는 데 도움이 되면 추가하는 방법을 썼습니다.
이 기록이라고 하기에도 민망한 코드는 2007년 들어서 Anarchy Golf에 Whirl 언어 지원이 추가되면서 마침내 깨졌습니다. 2010년 2월 현재 최고 기록은 명령 580개입니다. 물론 이 사람은 기계적으로 탐색해 나갔습니다만...
110011100111000001111100000001000011111000011111100000000010
000011001111100001100010000010011111000100000000000001001111
100000111110001000000000000000001000111110010000001100001111
100011000000000100111110011100111000111000001000111000001111
100000111110010000011111000110011111100001111000001111000001
110011111100001111000110011100000111000100011111000001111100
100000110000000111000001110001111100011111000111000001000001
000011000111110001000001000000011100000111001000111110001111
000001111000011111100001111110000011110000000000000000011110
000011100111000011110011111000111110001111100000100000000000
000000000000111110001110000001110000011100011100111110001000
100000000011100001111100110000000010011111000111100000111100
111100010011100000111110000011111001100111100010001111000000
000001000111110010000010011110011001110001000111110001100000
100011111000011110011100111111000111100000111100011111000000
011110000011100100001111000100011111001100011111000111100000
111001110001100111100100000000000000011111000001111100010010
000011100001111100100000100011100000111000110011110001001111
110001100000111100011111000111100000111001000011110001001111
100000111110000000011110000011110000000000000000111000001110
000011000001100000111000111000001100111110000111111001001110
000011111000001100011000001001111110000011100110011111000000
000111000001110000111100001100 -- by Kang Seonghoon 2005.1.7
(2005-06-20) "99 Bottles of Beer" 노래를 출력하는 명령 15556개짜리 프로그램입니다. 이 프로그램은 반복문과 조건문, 숫자 및 문자열 출력을 테스트하는 데 흔히 쓰입니다. 이 프로그램 역시 대부분을 손으로 짰으며, 처음에 메모리를 적절하게 초기화하는 부분만 기계화했습니다.
이 프로그램 역시 한동안 가장 큰 Whirl 프로그램이었으며 심지어 어떤 글에 인용되기까지 했습니다. 물론 이 기록 역시 2008년 9월 누군가가 엄청난 콰인 프로그램을 만들면서 깨졌습니다만.
1100011001111100011 1100111110010000010
0011111000001111100010000010001111100000111 1100010000010001111100000111110001000001000
11111000001111100010000010001111100000111110001000001000111 11000001111100010000010001111100000111110001000001000111110
00001111100010000010001111100000111110001000001000111110000011111000100 00010001111100111100111000000010000111000001100011100000000000000000000
0000000000000000000000000000011111001111110001111100111000011100000111000001110 0000000000000000000000000000000011000011110001100011100111110000000000000000000
0000000000000000000000000000011111000011000011111001111000001110000011100111110001111001100000110000011000011111000111100000111000001110011111000111100110000011000001100001111
1000111100000111000001110011111000111100110000111110001111000001110000011100111110001111 00110000011000001100001111100011110000011100000111001111100011110011000011111000111100000
1110000011100111110001111001100000110000011000001100000110000011000001100000110000011000 00110000011000001100000110000011000001100000110000011000001100000110000111110001111000001
1100000111001111100011110011000001100000110000111110001111000001110000011100111110001111 00110000111110001111000001110000011100111110001111001100000110000011000001100000110000111
1100011110000011100000111001111100011110011000001100000110000011000001100001111100011110 00001110000011100111110001111001100000110000011000011111000111100000111000001110011111000
1111001100000110000011000001100000110000011000001100001111100011110000011100000111001111 10001111001100001111100011110000011100000111001111100011110011000001100000110000011000001
1000001100000110000011000001100000110000011000011111000111100000111000001110011111000111 10011000001100000110000011000001100000110000011000001100000110000011000001100001111100011
1100000111000001110011111000111100110000011000001100000110000011000011111000111100000111 00000111001111100011110011000011111000111100000111000001110011111000111100110000011000001
1000011111000111100000111000001110011111000111100110000011000001100001111100011110000011 10000011100111110001111001100000110000011000001100000110000011000001100000110000011000011
1110001111000001110000011100111110001111001100000110000011000001100000110000011000001100 00111110001111000001110000011100111110001111001100000110000011000001100000110000011000001
1000011111000111100000111000001110011111000111100110000011000001100000110000011000011111 00011110000011100000111001111100011110011000001100000110000111110001111000001110000011100
1111100011110011000011111000111100000111000001110011111000111100110000111110001111000001 11000001110011111000111100110000111110001111000001110000011100111110001111001100001111100
0111100000111000001110011111000111100110000111110001111000001110000011100111110001111001 10000111110001111000001110000011100111110001111001100001111100011110000011100000111001111
1000111100110000111110001111000001110000011100111110001111001100001111100011110000011100 00011100111110001111001100001111100011110000011100000111001111100011110011000011111000111
1000001110000011100011110000111001111100011111000111100011111001111100000111000000000000 01110000000001110000000000000000000000000110000011000111000001110011111100011111000001111
1001111110000000001110000011100000000000000000000000000000000000000000000011000001100011 10000011100111111000111110000011111001111110000000001110000011100000000011100000111000000
0000000000000000000000000000000000011000001100011100000111001111110001111100000111110011 10000111000001110000000001110000011100000000011100000000011100000000011100000000000000000
0001000001110000011000111000001110011111100011111000111100001000111110010000000011100000 11100000000000000000000000000000000000000000000000000000000000010000011100000110001110000
0111001111110001111100000111110001111100111110011110000011110001111100010000000011100000 11100000111000001110000000000000000000000000000000000000000000000000000000001100000110011
1000001110011111100011111000001111100111000011100000000011100000111000000000000000000000 00000000001110000011100000111110000011111000000000000000000000000000000100000111000001100
0111000001110011111100011111000111100011111001111100000111000001110000011100000000011100 00011100000000000000000000000111000001110000000001111100000111110001100000110001110000011
1001111110001111100000111110011111100000000000000000000000000000000000000000000000000000 00000000000000000000110000011000000000000000000000000000000000000000000000000011000001100
0001100000110001110000011100111111000111110001111000111110011111000001110000000000000000 00000000000000000000000000011100000111000000000111110000011111000000000001100000111000001
1100000110001110000011100111111000111110000011111001110000000011100000000011100000000011 10000000000000000000000011100000111000000000111110000011111000000000000000000000000000000
0110000011000111000001110011111100011111000001111100111000011100000000000001110000000001 11000000000000000000000001110000011100000111110000011111000110000011000001100000110000000
0000000000000000000000000000000000000000000000000000000000110000011000111000001110011111 10001111100000111110011100001110000000000000000000000000000000000000000000111000001110000
0000000001111100000111110000000000000001100000110001110000011100111111000111110000011111 00111111000000000000011100000111000000000000000000000000000000000000000000000110000011000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000011000001100011100000111001111110001111100000111110011111100
0000000111000001110000011100000000011100000000000000000000000111000001110000000000000000 01111100000111110001100000110001110000011100111111000111110000011111001111110000011100000
0000111000001110000000001110000000000000000000000011100000111000001111100000111110000000 00000000000000000000110000011000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000011000000000110001110000011100111111 00011111000111100011111001100000000000011100000000011100000000000000000000000000011100000
1110000000000000000011111000001111100000000000000000000000000000000001000001110000011000 T o k i g u n S t u d i o p r e s e n t s 11100000111001111110001111100000111110001111100111110011110000011110001111100010000000011
1000000000111000000000000000000000000001110000011100000000000000000000011111000001111100 01100000110001110000011100111111000111110000011111001111110000011100000111000001110000011
1000001110000011100000000000000000000000111000001110000000000000000000001111100000111110 00000000001100 00011000111000 00111001111110001111100011110001111100111110000011100000111000001110000011100000000011100
0000000000000000000001110000011100000000000000000000011111000001111100000000000000000001 10000011000111 00000111001111 11000111110001111000111110011000011100000111000000000111000000000111000000000000000000000
0011100000111000001111100000111110000000000000000000000000000000110000011000000000000000 0000 0000 0000 0000 00000000000000000011000000000110000000000000000000000000000000000000110000011000000000000
0000000000000000000000000000000000000000011000001100000000000001100000110001110000011100 1111 1100 0111 1100 01111000010001111100100000000010011111000111100000111100011111000100000000000011100000111
0000000000000000001110000011100000000000000000111110000011111000000000000000110000011000 00000000000000 00000000000000 00000000000000000000000000000000000000000000001100000110001110000011100111111000111110000
0111110011111100000000000010011111000111100000111100011111000100000000111000001110000000 00000000000111 00000111000000 00000000000000000001111100000111110000000000000000000000000000000110000011000111000001110
0111111000111110001111000111110011111000001110000000010011111000111100000111100011111000 1000 0000 01110000011100000000000000000011100000111000000000111110000011111000000000000000110000011
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000 0000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000001100
0000000110001110000011100111111000111110001111000111110011000000001110000011100000111000 00000011100000 00000000000000 00001110000011100000000000000000000000000000111110000011111000000000001100000110001110000
0111001111110001111100000111110011111100000111000001110000100111110001111000001111000111 11000100000000 11100000111000 00000000000000011100000111000001111100000111110000000000000000000110000000001100000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000110000 01100000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000011000001100011100000111001111110001111100 B O T T L E S O F B E E R 00011111001111110000000000000000011100000111000000000000000000000000000111000001110000011
1110000011111000000011000001100000000000000000000000000000000000000000000000000000110000 01100000000011000001100000000000000000000000001100000110000000001100000110000000000000110
0000110000000000000000000000000000000000000000000000000000011000001100000000000001100000 I N W H I R L 11000000000000000000000110000011000000000000000001100000110000000001100000110001110000011
1001111110001111100011110001111100110000000000000000111000000000111000000000000000000000 00111000001110000000000000000011111000001111100000000000000000001100000110000000000000000
0000000000000000011000001100000000000000000000000000000000000000000000000000000000011000 b y K a n g S e o n g h o o n 00110000000000000000000000000110000011000111000001110011111100011111000001111100111000011
1000000001001111100011110000011110001111100010000000011100000111000000000000000000111000 00111000000000000011111000001111100000000000110000011000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000001100000110001110000011100111111000111110
0011110000100011111001000000000000010011111000111100000111100011111000100000000111000001 11000000000000000000000000000000000000000000000000000000000110000011000000000000011000001
1000000000000000000000000000000000000000000000000011000001100000000000000000000000000000 00000000110000011000000000000000000000000000000000000000000000000000000000000000000000000
0000000001100000110000000000000000011000001100000000000000000000000000000000000000000000 00000000000001100000110011100000111001111110001111100011110001111100110000111000001110000
1001111100011110000011110001111100010000000011100000111000000000000000000111000001110000 00000000000000000000000001111100000111110000000000000000000000000000000000011000001100011
1000001110011111100011111000001111100011111001111100111100000111100011111000100000000010 00111110001111000001111000111110001000000001110000011100000000000000000011100000111000000
0000000111110000011111000000000000000000000000000000011000001100000000000000000000000000 00000000000000000000000000000000000000000000000000000001100000110000000000000000000001100
0001100000000000000000000000000000000000000000000000000000000011000001100011100000111001 11111000111110000011111001111110000011100000111000000000111000000000111000000000000000000
0000011100000111000000000000000000000000011111000001111100000001100000110000000000000000 00000000000000000000000000000000000000000000000000000000011000001100011100000111001111110
0011111000001111100111111000001110000000001110000011100000111000000000000000000000000000 11100000111000000000000000001111100000111110000000000000000000000000000000110000011000000
0000000000000000000000000000000000000000000000000000000000000001100000110000000000000000 00000000000000000000000000000000000000000000011000001100011100000111001111110001111100000
1111100111000011100000111000001110000000000000000000000000000000000000000011000001100000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00011000001100000000011000001100000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000011000001100011100000111001 11111000111110001111000111110011111000001110000000001110000011100000111000001110000000000
0000000000000111000001110000000000000000000000000000000001111100000111110000000000100000 11100011100011000111000001111100000111110000000000000000000000000111110010100111110000011
1110000111110000011100000111000011100001111000011111000001110000011100000111110000111000 01111000001111000001111000001111000001111000001111000001111000001111000001111000001111000
0011110000011110000011110000111110000011111001000011100000110001110011001111111000001111 10000111110000000011110000011110000111000001110000011111000011111000001111100001111100000
1110000011100000111110000111000011110000011110000011110000011110000011110000011110000011 11000001111000001111000001111000001111000001111000001111000001111000001111000011100000111
0000011111000011100001111000001111000001111000001111000001111000001111000001111000001111 00000111100000111100000111100000111100000111100000111100000111100000111100000111100000111
1000001111000001111000001111000001111000001111000001111000001111000001111000001111000011 10000011100000111110000111100000111100001111100000111000001110000011111000011100001111000
0011110000011110000011110000011110000011110000011110000011110000011110000011110000011110 00001111000001111000011111000001111100010000111000001100011100110011111110000011111000011
1110000000011110000011110000111000001110000011111000011111000001111100001111100000111000 00111000001111100001110000111100000111100000111100000111100000111100000111100000111100000
1111000001111000001111000001111000001111000001111000001111000001111000000001110000011100 00011111000011100001111000001111000001111000001111000001111000001111000001111000001111000
0011110000011110000011110000011110000011110000011110000011110000011110000011110000011110 00001111000001111000001111000001111000001111000001111000001111000001111000001111000001111
0000011110000011110000011110000011110000011110000011110000011110000011110000011110000011 11000001111000001111000001111000001111000001111000001111000001111000001111000001111000001
1110000011110000011110000011110000011110000011110000011110000011110000011110000011110000 01111000001111000001111000001111000001111000001111000001111000001111000011100000111001111
1100111110001111000010000111100000100110010011111001110000000001100001111000001111000001 10001110001100011111000011111000011111000000001111000001111000001111000001111000011100000
1100001111100001111100000111000001110000111000011110000111110000000001110000011100000111 11000001111000001111000001111100000111110000111000011110000011110000011110000011110000011
1100000111100000111100000111100000111100000111100000111100000111100000111100001110000011 10011111100111110001111000001001100011100111110000000000000111000001110011000111110001100
0111110001111000001100011100110011111110000011111000011111000000001111000001111000011100 00011100000111110000111110000011111000011111000001110000011100000111110000111000011110000
0111100000111100000111100000111100000111100000111100000111100000111100000111100000111100000111100000111100000111100000111100001110000011100000111110000111000011110000011110000
0111100000111100000111100000111100000111100000111100000111100000111100000111100 0001111000001111000001111000001111000001111000001111000001111000001111000001111
000001111000001111000001111001111110001111100011110000111110000010000 111110000111111000010001000111100010011110000100001111001111100011110
0011111000111100000111100000111001111100011000111100000 0000111100001110000011100000111110001000111110001110000
000001100000000111100000110001110011101 00111111100000111100<tokigun@gmail.com>
(2005-01-06, 2005-01-07, 2005-06-17) "WHIRL"이 가운데에 떡하니 박혀 있는 C 인터프리터입니다. 파일 이름을 인자로 주거나, 표준 입력을 사용할 경우 파일 이름을 -
로 줘서 코드를 실행할 수 있습니다. 메모리 셀의 수는 99999개로 고정되어 있습니다.
#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>"
);if(f=**++I-45||1[*I]?fopen(*I,"r"):stdin){while((*d=fgetc(
f))>=0 )*d/2-24 ?0 :(*d ++ -= 48) ;for(;p<d;q
=!*p++ &&!q)if( *p )v[s ]=(v [s]- r[s ]+ 13)%12;else
#define O( n) ;;} else /**/ if( !(v[s]-n)){
{r[s]^= 2; if (q) {t=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)*u=t?putchar(*u)
:getchar();}w[s]=t;s=!s;if(p<P)p=P;}}fclose(f);}else printf(
"File Not Found: %s\n",*I);return!f;}/*20050617rev3tokigun*/
(2005-01-08) 이 프로그램은 esotope-whirl의 보조 프로그램으로, Whirl의 개발자가 "귀찮다"는 이유로 만들지 않았다고 주장한 Whirl 프로그램의 바이너리 압축기입니다. 첫 인자가 e
이면 표준 입력에서 평문을 받아 바이너리로 출력하고, 반대로 d
이면 역변환을 수행합니다. 바이트 단위로 떨어지지 않을 경우 의도하지 않은 실행을 막기 위해 1
명령으로 빈 칸을 패딩합니다.
#include/*tokigun*/<stdio.h>
int p,q;int main(int i,char*
*j){if(i-2)printf("Usage:\n\
\t%s e < plain > binary\n\t\
%s d < binary > plain\n",*j,
*j);else if(**++j==100)while
(~(i=getchar()))for(p=128;p;
p/=2)putchar(i&p?49:48);else
if(**j==101){while(~(i=getc\
har())){if((i|1)==49){p=2*p+
i%2;if(++q>7){putchar(p);p=q
=0;}}}q&&putchar(p<<8>>q|255
>>q);}/*20050108*/return 0;}
1d46270eb038
)