最高のワンライナー
引用元:https://www.ioccc.org/1991/fine/fine.orig.c
審査員・作者による説明:https://www.ioccc.org/1991/fine/index.html
ROT13エンコーダ。
$ gcc -o fine fine.c
$ echo Hello | ./fine
Uryyb
80バイトでROT13エンコードをする。
b=64^a&223という補助変数を定義することで、アルファベットの範囲(65..90と97..122)を特定する処理と、ROT13変換のために13文字分ずらす処理を巧妙にまとめている。
前者は0<b&&b<27で判定でき、後者は(b+12)%26+1で13文字分ずらした上で上位ビットをa&96とORすることで元の文字に復元できる。
8ビット目の保存を無視して1バイト減らすことが読者の課題になっているが、223を97にすればいいと思う。
余談だが、whileではなくforにすることでさらに1バイト減らせるような気がする。