Most likely to top the charts
もっともチャートの1位になりそう
受賞者:Qiming HOU
引用元:https://www.ioccc.org/2018/hou/prog.c
審査員・作者による説明:https://www.ioccc.org/2018/hou/hint.html
動作
JSONデータからSVGで円グラフを描く。
$ gcc -o prog prog.c -lm
$ ./prog < input.json > tmp.html
prog: prog.c:124: C: Assertion `rulez' failed.
Aborted
tmp.htmlをブラウザで開く。
解説
「近年、ほとんどのプログラマはWeb関係の雑用しかやっていない。オープンソースのライブラリでなんでも揃っているので、ライブラリをうまく使いこなしてJSONデータからHTMLページを生成するだけ」ということを皮肉り、同じようなことを無理やりC言語でやってみたという作品。
変数なし、演算子なし、制御構造なし(return
はあるけど返り値は不使用)という制約で書かれている。
基本的な戦略は、getenv()
とsetenv()
で環境変数を変数的に使うというもの。
ただし文字列リテラルも避けているようで、getenv(memset(calloc(3, 1), fma(1, 6, 64)))
でgetenv("F")
相当になっている。
現場のコーディング標準にしたがって、コードにはおしゃれな専門語(マクロ名の並びが”JSON HTML mobile WEB javAscrIpt”)、doxygenコメント、ライセンステキストでとっちらかっている。
assert()
の失敗で終わるのは仕様(分岐がないので無限再帰を抜けるにはこういうのしかない)。
HTMLが生成されてれば誰も文句ないでしょう、とのこと。
プログラミングの現状に対する皮肉と、それを実現する技術力、ともにすばらしい。