Abusing The Rules

ルールの悪用

受賞者:Diomidis Spinellis

引用元:https://www.ioccc.org/1995/spinellis.c

審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/1995/spinellis.hint

動作

自分のソースコードを与えて実行すると、IOCCCのルールの抜粋を表示する。

$ gcc -o spinellis spinellis.c

$ ./spinellis < spinellis.c
12th International Obfuscated C Code Contest Rules

    Obfuscate:  tr.v.  -cated, -cating, -cates.  1. a.  To render obscure.
                b.  To darken.  2. To confuse:  his emotions obfuscated his
                judgment.  [LLat. obfuscare, to darken : ob(intensive) +
                Lat. fuscare, to darken < fuscus, dark.] -obfuscation n.
                obfuscatory adj.

GOALS OF THE CONTEST:

    * To write the most Obscure/Obfuscated C program under the rules below.
    * To show the importance of programming style, in an ironic way.
    * To stress C compilers with unusual code.
    * To illustrate some of the subtleties of the C language.
    * To provide a safe forum for poor C code.  :-)


RULES:

    [...]
    2) Your entry must be <= 3217 bytes in length.  The number of characters
       excluding whitespace (tab, space, newline), and excluding any ; { or }
       immediately followed by whitespace or end of file, must be <= 1536.
    [...]

解説

空白と;{}だらけのコメントが大半を占めるソースコード。 ここに上記の抜粋がエンコードされている。

このような文字の選択になっているのは、IOCCCのコードサイズのルール、「作品は3217バイト以下であること。また、空白以外の文字の数は1536個以下であること(ただし;{}で、その後に空白文字が来るものはカウントしない)」を悪用するため。 つまり、;{}の後で空白がある場合は1536バイトの制限を気にしなくて済む。 これみよがしに、ファイル全体のサイズも上限の3217バイトとなっている。

ネタ自体は[[1992/vern]]で既出だが、ルールの悪用にフォーカスを絞っている点に好感を持てる。 コード部は意味ありげなインデントになっているが、特に意味はないと思う。