引用元:https://www.ioccc.org/2005/vince/vince.c
審査員・作者による説明:https://www.ioccc.org/2005/vince/hint.text
動作
OpenGLを使ったロゴ入りキューブが回転するデモ。
$ gcc -o vince vince.c -lGL -lGLU -lX11
$ ./vince
真ん中で回るキューブに、それに重なるように飛んできて飛んでいくキューブもある。
スペースバーを押すとキューブがさまざまな色に微妙に変わる。
解説
IOCCCにX11を使った作品が増えているが、X11はスタンダードではない、ということで、スタンダードになっているOpenGLで作ったとのこと。
OpenGLは定数名や関数名がとにかく長いので、サイズ制限と戦うのが大変だった。
コード形状はキューブ。
ロゴは、自分のソースコードを開いて、次の関数定義から読み出す。
void Y()
{ { { { { { { { { { { { { { { {
{ { { { { { { { { { {
{ { { { { {
{ { { { { { { {
{ { { { { {
{ { { { { ; { } } } } }
} } } } } } }
} } } } } }
} } } } } }
} } } } } }
} } } } } } }
} } } } } } } } } } } } } } } }
{
と}
を使って”2005 / IOCCC”と書かれているのがわかる。
IOCCCのサイズ制限のルール上、波カッコと空白が続く文字は0文字扱いなので、コードサイズを稼げる。
同様にQ()
の定義も必要なデータをエンコードしているのだと思う(詳しく見ていない)。