You are here: Home &rarr Uncategorized &rarr The obfuscated Eiffel

The obfuscated Eiffel

International Obfuscated C Code Contest

The International Obfuscated C Code Contest (abbr. IOCCC) is a programming contest for the most creatively obfuscated C code held annually since 1984. The goal is thus to create the most complex and complicated logic for a possibly simple execution!!

There are many winning entries each year, and each entry gets a category such as “Worst Abuse of the C preprocessor” or “Most Erratic Behavior”.

The IOCCC was started by Landon Curt Noll and Larry Bassel. They were talking together about the horrible code it was their jobs to maintain and this led to an idea. They decided to hold a contest for the worst possible C code!

Within the only limit being the code size to a few kilobytes, the contestants manage to do complicated things.A 2004 winner turned out an operating system.

Some quotes from 2004 winners include:

To keep things simple, I have avoided the C preprocessor and tricky statements such as “if”, “for”, “do”, “while”, “switch”, and “goto”.
We still aren’t sure whether or not this is a useful program, but it’s the first atomic fission we’ve seen in the IOCCC.
Why not use the program to hide another program in the program? It must have seemed reasonable at the time.
The program implements an 11-bit ALU in the C preprocessor.
I found that calculating prime numbers up to 1024 makes the program include itself over 6.8 million times.

Below is a 1988 entry which calculates pi by looking at its own area:

#define _ -F<00||--F-OO--;
int F=00,OO=00;
main()
{
F_OO();
printf("%1.3fn",4.*-F/OO/OO);
}
F_OO()
{
_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_
_-_-_-_
}

Another good example is this clever flight simulator, the winner of the IOCCC in 1998 as shown below:

#include
#include
#include
#include
double L ,o ,P
,_=dt,T,Z,D=1,d,
s[999],E,h= 8,I,
J,K,w[999],M,m,O
,n[999],j=33e-3,i=
1E3,r,t, u,v ,W,S=
74.5,l=221,X=7.26,
a,B,A=32.2,c, F,H;
int N,q, C, y,p,U;
Window z; char f[52]
; GC k; main(){ Display*e=
XOpenDisplay( 0); z=RootWindow(e,0); for (XSetForeground(e,k=XCreateGC (e,z,0,0),BlackPixel(e,0))
; scanf("%lf%lf%lf",y +n,w+y, y+s)+1; y ++); XSelectInput(e,z= XCreateSimpleWindow(e,z,0,0,400,400,
0,0,WhitePixel(e,0) ),KeyPressMask); for(XMapWindow(e,z); ; T=sin(O)){ struct timeval G={ 0,dt*1e6}
; K= cos(j); N=1e4; M+= H*_; Z=D*K; F+=_*P; r=E*K; W=cos( O); m=K*W; H=K*T; O+=D*_*F/ K+d/K*E*_; B=
sin(j); a=B*T*D-E*W; XClearWindow(e,z); t=T*E+ D*B*W; j+=d*_*D-_*F*E; P=W*E*B-T*D; for (o+=(I=D*W+E
*T*B,E*d/K *B+v+B/K*F*D)*_; p K)N=1e4; else{ q=W/K *4E2+2e2; C= 2E2+4e2/ K
*D; N-1E4&& XDrawLine(e ,z,k,N ,U,q,C); N=q; U=C; } ++p; } L+=_* (X*t +P*M+m*l); T=X*X+ l*l+M *M;
XDrawString(e,z,k ,20,380,f,17); D=v/l*15; i+=(B *l-M*r -X*Z)*_; for(; XPending(e); u *=CS!=N){
XEvent z; XNextEvent(e ,&z);
++*((N=XLookupKeysym
(&z.xkey,0))-IT?
N-LT? UP-N?& E:&
J:& u: &h); --*(
DN -N? N-DT ?N==
RT?&u: & W:&h:&J
); } m=15*F/l;
c+=(I=M/ l,l*H
+I*M+a*X)*_; H
=A*r+v*X-F*l+(
E=.1+X*4.9/l,t
=T*m/32-I*T/24
)/S; K=F*M+(
h* 1e4/l-(T+
E*5*T*E)/3e2
)/S-X*d-B*A;
a=2.63 /l*d;
X+=( d*l-T/S
*(.19*E +a
*.64+J/1e3
)-M* v +A*
Z)*_; l +=
K *_; W=d;
sprintf(f,
"%5d  %3d"
"%7d",p =l
/1.7,(C=9E3+
O*57.3)%0550,(int)i); d+=T*(.45-14/l*
X-a*130-J* .14)*_/125e2+F*_*v; P=(T*(47
*I-m* 52+E*94 *D-t*.38+u*.21*E) /1e2+W*
179*v)/2312; select(p=0,0,0,0,&G); v-=(
W*F-T*(.63*m-I*.086+m*E*19-D*25-.11*u
)/107e2)*_; D=cos(o); E=sin(o); } }

Great, really!

Some ways in which contributions are notable include:

1. The appearance of the source code, which may resemble images, text, etc.
2. Preprocessor redefinitions to make code harder to read
3. Self-modifying code
4. Worst abuse of the rules.

Some of the most popular categories are ::

Best Calculated Risk
Best abuse of the Periodic table
Best abuse of Indentation
Best Abuse of CPP

Obfuscated c home page :: Obfuscated c home


About Chinmoy


Chinmoy Kanjilal is the admin of this blog is a programmer and a technology, Linux and web2.0 enthusiast and evangelist from India with an eye for detail. He has a fondness for intriguing software products and hardware hacks.

  • Well,that is the reason it is obfuscated! Even i did not unnderstand. Though the answer returned on some modifications is 0.2! I guess the modifications are wrong. It is supposed to work in some other compiler. I tries tc and gcc..
  • Below is a 1988 entry which calculates pi by looking at its own area

    I could not make head or tail of that code. Totally went over my head.
blog comments powered by Disqus
Content on this Blog is Copyright © 2010 Techarraz. Some rights reserved.
Designed by Theme Junkie. Powered by WordPress.