또 다른 C 코드를 만드는 C 코드 기억나시는분 있나요?
      글쓴이: MasterQ / 작성시간: 금, 2009/08/14 - 8:39오전    
  
  아주 오래전에 이곳 게시판에서 본것이라 정확히 어떤 프로그램이었는지 기억하지 못하지만
대충 이랬던것 같습니다.
C로 짜여진 프로그램인데, compile하고 실행을 하면 어떤 일본 글자를 ascii art형식으로 출력을 하는데
그 output 자체가 또 하나의 source code였고, 또 이것을 복사해서 컴파일해서 실행을 하면 또 다른
일본 글자를 출력했는데, 이것 또한 또 다른 C source code라서 또 출력할수 있었고 결국은 맨 처음 글자로
돌아가는 굉장히 신기한 프로그램이었는데, 아무리 검색해도 찾을수가 없네요.
혹시 기억 나시는분 계시면 알려주세요~~
Forums: 


음..
IOCCC 의 작품 중 하나였던 것 같은데, 지금은 사이트가 안 열리네요
http://www.ioccc.org/
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
제가 기억하는
(일본어라 하니 이것은 아니겠지만) 제가 기억하는 것으로는 Ken Thompson의 ACM award lecture가 있습니다.
http://www.google.com.au/url?sa=t&source=web&ct=res&cd=4&url=http%3A%2F%2Fwww.ece.cmu.edu%2F~ganger%2F712.fall02%2Fpapers%2Fp761-thompson.pdf&ei=x6aESrOZDsmIkAWhusm1Bw&usg=AFQjCNHEfcr3nqaWB49hKiQMr8soeNbbkA
아래 주소에
아래 주소에 있습니다.
http://okjsp.pe.kr/seq/30346
찾는키워드 : 악즉참 소스코드
제가 바람의 검심을 좋아해서 주인공중의 한 명에 관한 소스코드라 기억하고 있었네요.
정말.....
진짜 ..
대단하군요....
KLDP에도 출몰하시는
KLDP에도 출몰하시는 lifthrasiir 님이 쓰고 계시는 Tour de IOCCC라는 게 있습니다. 악즉참 코드에 대한 해설도 있네요.
—홍민희 (VLAAH, LangDev)
고맙습니다!
고맙습니다! 악즉참이었네요~ 이것을 찾다가 더더욱 신기한것을 찾았습니다. IOCCC에서 나온것인데
이것을 실행하면 나오는것이 ppm 포맷의 그림파일인데, 코드안에 ray tracer가 들어가 있는것 같더군요. -_-;;;
stdout으로 output이 나오니까 redirect하셔서 보세요.
X=1024; Y=768; A=3; J=0;K=-10;L=-7;M=1296;N=36;O=255;P=9;_=1<<15;E;S;C;D;F(b){E="1""111886:6:??AAF" "FHHMMOO55557799@@>>>BBBGGIIKK"[b]-64;C="C@=::C@@==@=:C@=:C@=:C5""31/513/5131/" "31/531/53"[b ]-64;S=b<22?9:0;D=2;}I(x,Y,X){Y?(X^=Y,X*X>x?(X^=Y):0, I (x,Y/2,X )):(E=X); }H(x){I(x, _,0);}p;q( c,x,y,z,k,l,m,a, b){F(c );x-=E*M ;y-=S*M ;z-=C*M ;b=x* x/M+ y*y/M+z *z/M-D*D *M;a=-x *k/M -y*l/M-z *m/M; p=((b=a*a/M- b)>=0?(I (b*M,_ ,0),b =E, a+(a>b ?-b:b)): -1.0);}Z;W;o (c,x,y, z,k,l, m,a){Z=! c? -1:Z;c <44?(q(c,x ,y,z,k, l,m,0,0 ),(p> 0&&c!= a&& (p<W ||Z<0) )?(W= p,Z=c): 0,o(c+ 1, x,y,z, k,l, m,a)):0 ;}Q;T; U;u;v;w ;n(e,f,g, h,i,j,d,a, b,V){o(0 ,e,f,g,h,i,j,a);d>0 &&Z>=0? (e+=h*W/M,f+=i*W/M,g+=j*W/M,F(Z),u=e-E*M,v=f-S*M,w=g-C*M,b=(-2*u-2*v+w) /3,H(u*u+v*v+w*w),b/=D,b*=b,b*=200,b/=(M*M),V=Z,E!=0?(u=-u*M/E,v=-v*M/E,w=-w*M/ E):0,E=(h*u+i*v+j*w)/M,h-=u*E/(M/2),i-=v*E/(M/2),j-=w*E/(M/2),n(e,f,g,h,i,j,d-1 ,Z,0,0),Q/=2,T/=2, U/=2,V=V<22?7: (V<30?1:(V<38?2:(V<44?4:(V==44?6:3)))) ,Q+=V&1?b:0,T +=V&2?b :0,U+=V &4?b:0) :(d==P?(g+=2 ,j=g>0?g/8:g/ 20):0,j >0?(U= j *j/M,Q =255- 250*U/M,T=255 -150*U/M,U=255 -100 *U/M):(U =j*j /M,U<M /5?(Q=255-210*U /M,T=255-435*U /M,U=255 -720* U/M):(U -=M/5,Q=213-110*U /M,T=168-113*U / M,U=111 -85*U/M) ),d!=P?(Q/=2,T/=2 ,U/=2):0);Q=Q< 0?0: Q>O? O: Q;T=T<0? 0:T>O?O:T;U=U<0?0: U>O?O:U;}R;G;B ;t(x,y ,a, b){n(M*J+M *40*(A*x +a)/X/A-M*20,M*K,M *L-M*30*(A*y+b)/Y/A+M*15,0,M,0,P, -1,0,0);R+=Q ;G+=T;B +=U;++a<A?t(x,y,a, b):(++b<A?t(x,y,0,b):0);}r(x,y){R=G=B=0;t(x,y,0,0);x<X?(printf("%c%c%c",R/A/A,G /A/A,B/A/A),r(x+1,y)):0;}s(y){r(0,--y?s(y),y:y);}main(){printf("P6\n%i %i\n255" "\n",X,Y);s(Y);}정말 신기하네요....
정말 신기하네요.... 소스 좀 검토해 봐야 겠네요.
레이트레이서는 맘만
레이트레이서는 맘만 먹으면 작게 짜는 것도 어렵지 않습니다. 누가 C++/Ocaml 레이트레이서 코드 비교 해 놓은 것도 보니까 데이터 모델만 잘 잡으면 짧게 될 것 같더군요. 출력하는 씬이 단순한 것도 같은 이유일 것입니다.