IOCCCの名作を読み解いてみた

IOCCC、すごいよねえ。
公式サイトに行けば、昔からの入賞作品を見ることができる。

名作揃いだと思うのだが、個人的に特に好きなのが、1992年のBrian Westleyさん(aka Merlyn LeRoyさん)の作品。(ソースコード

           main(l
      ,a,n,d)char**a;{
  for(d=atoi(a[1])/10*80-
 atoi(a[2])/5-596;n="@NKA\
CLCCGZAAQBEAADAFaISADJABBA^\
SNLGAQABDAXIMBAACTBATAHDBAN\
ZcEMMCCCCAAhEIJFAEAAABAfHJE\
TBdFLDAANEfDNBPHdBcBBBEA_AL\
 H E L L O,    W O R L D! "
   [l++-3];)for(;n-->64;)
      putchar(!d+++33^
           l&1);}

古い仕様のCで書かれているが、GCC 4.9.3で正常にコンパイルできることは確認している。

cc westley.c

正常にコンパイルできたら動かしてみよう。例えばこんな感じで。
(動かす際には横幅80文字の端末を使う必要があるので注意)

a.out 35 135

出力はこんな感じ↓

しばらく出力を眺めて、何が書かれているのかを理解してから、もう一度ソースコードを見返した時に衝撃を受けた。
すごいよね~

続きを読む