Obfuscated C Contest

名詞

(正式には‘International Obfuscated C Code Contest’、すなわちIOCCC)Landon Curt Nollと仲間たちによって1984年以来Usenet上で運営されている年次コンテスト。総合優勝者は、最も読みにくく、独創的で、奇妙な(しかし動作する)Cプログラムを作った者である。その他さまざまな賞が審査員の気まぐれで授与される。Cの簡潔な構文とマクロプリプロセッサ機能は、参加者に多くの小細工の余地を与える。優勝プログラムはしばしば、(a)面白く、(b)息をのむような芸術作品であり、かつ(c)Cでコードを書く際にやってはいけないことのひどい見本である、という三つを同時に成し遂げてのける。

この比較的短くて小気味よい応募作は、難読化されたCの趣を伝えるのに役立つかもしれない。

/*
 * HELLO WORLD program
 * by Jack Applin and Robert Heckendorn, 1985
 * (Note: depends on being able to modify elements of argv[],
 * which is not guaranteed by ANSI and often not possible.)
 */
main(v,c)char**c;{for(v[c++]="Hello, world!\n)";
(!!c)[*c]&&(v--||--c&&execlp(*c,*c,c[!!c]+!!c,!c));
**c=!c)write(!!*c,*c,!!**c);}

もう一つの良い例を挙げよう。

/*
 * Program to compute an approximation of pi
 * by Brian Westley, 1988
 * (requires pcc macro concatenation; try gcc -traditional-cpp)
 */

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

このプログラムは、自分自身の面積を計算することで動作することに注意せよ。もっと多くの桁が欲しければ、もっと大きなプログラムを書けばよい。hello worldも参照。

IOCCCには公式ホームページがある。http://www.ioccc.org/