引用元:https://www.ioccc.org/2015/schweikhardt/prog.c
審査員・作者による説明:https://www.ioccc.org/2015/schweikhardt/hint.html
動作
コラッツ予想の数列を計算する。
$ gcc -Dtyp=uint64_t -o prog prog.c
$ ./prog 6
0000000000000006
0000000000000003 1
000000000000000A 2
0000000000000005 3
0000000000000010 4
0000000000000008 5
0000000000000004 6
0000000000000002 7
0000000000000001 8
入力も出力も16進数で行われることに注意。
解説
コラッツ予想は、偶数なら2で割り、基数なら3を掛けて1を足す、という処理を繰り返していくうちに1にたどり着く、という予想。
動作例に示した6の場合、6→3→10→5→16→8→4→2→1となる。
多倍長整数で計算を行う。
ドキュメントが非常に長く、700行ほどある。
guidelines.txtに書かれた審査プロセスにしたがって、この作品の特徴などをPRしている。
Cコードの静的・動的解析ツールをいろいろ適用した結果も書かれている。
MISRA Cのルールがどのように難読化に寄与したか、なども。
コード形状に特徴はない。
審査プロセスにC beautifierを適用するとあるので、あらかじめindentを適用しておいたとのこと。
1文字の変数名は古いので3文字。
基本的にタンパク質を構成するアミノ酸の3文字表記を採用している。
2の累乗以外のマジックナンバーを使わない、という制約も。