Most beauteous visuals

もっとも美しい見た目

受賞者:Vincent Weaver

引用元: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
2005 IOCCCと書かれたキューブが回転しているデモ
図:2005 IOCCCと書かれたキューブが回転しているデモ

真ん中で回るキューブに、それに重なるように飛んできて飛んでいくキューブもある。

もうひとつのキューブがまるい軌道を描いて中央のキューブを通り過ぎていく
図:もうひとつのキューブがまるい軌道を描いて中央のキューブを通り過ぎていく

スペースバーを押すとキューブがさまざまな色に微妙に変わる。

キューブの色が変わる
図:キューブの色が変わる

解説

IOCCCにX11を使った作品が増えているが、X11はスタンダードではない、ということで、スタンダードになっているOpenGLで作ったとのこと。 OpenGLは定数名や関数名がとにかく長いので、サイズ制限と戦うのが大変だった。 コード形状はキューブ。

ロゴは、自分のソースコードを開いて、次の関数定義から読み出す。

void Y()
{ { { { { { { { { { { { { { { {
                               
  { {     { { {   { { {   { { {
      {   {   {   {   {   {    
  { {     {   {   {   {     { {
  {       {   {   {   {       {
  { { {   { { ;   { } }   } } }
                               
                               
  }   } } }     }     }     }  
  }   }   }   }     }     }    
  }   }   }   }     }     }    
  }   }   }   }     }     }    
  }   } } }     }     }     }  
                               
} } } } } } } } } } } } } } } }

{}を使って”2005 / IOCCC”と書かれているのがわかる。 IOCCCのサイズ制限のルール上、波カッコと空白が続く文字は0文字扱いなので、コードサイズを稼げる。 同様にQ()の定義も必要なデータをエンコードしているのだと思う(詳しく見ていない)。