Best abuse of the rules

ルールの最高の悪用

受賞者:Dave Burton

引用元:https://www.ioccc.org/2018/burton2/prog.c

審査員・作者による説明:https://www.ioccc.org/2018/burton2/hint.html

動作

Cコードのサイズを評価するツール。

$ gcc -trigraphs -DW=\"keywords\" -DU="\"prog [-tcksri] < file.c\ntokenize and count stdin\n\t-t\ttokens only\n\t-c\tcompatible counts\n\t-k\tkeep comments\n\t-s\tsuppress output\n\t-r\treserved words count as 1\n\t-i\tioccc count only\n\"" -o prog prog.c

$ ./prog < prog.c
257 #include
60 <
258 stdio
46 .
258 h
62 >
...
43 +
258 r
40 (
258 T
44 ,
260 3
41 )
59 ;
125 }
67 1885 4027 3386 621 82 0

トークンの列を出した後、最下行に評価が出る。 それぞれ、行数、ワード数、文字数、IOCCCのサイズルールに従ったサイズ、ルールとキーワードのためにカウントが減った文字数、キーワードの数、キーワードのm字数を1とカウントした場合にカウントが減った文字数。

-iを渡せばiocccsize互換モードで動く。

$ ./prog -i < prog.c
2052

$ ../iocccsize -i < prog.c
2052

他にもオプションがあるので、tac.manを参照のこと。

解説

iocccsizeの置き換えを狙って作ったとのこと。 iocccsizeのバグをいくつか指摘しており、-iのときはそれらのバグも再現する。 iocccsizeのバグを悪用した[[2014/birken]]を正しく測定できる。

コード形状は秤。

hint.textはだいぶ長く、いろんなことが書いてある。 ポエムっぽいアブストラクト、IOCCC作品の年代ごとのキーワード出現傾向、言語に違いのあるキーワード一覧の話など。