Best One Liner

最高のワンライナー

受賞者:Thomas A. Fine

引用元:https://www.ioccc.org/1991/fine.c

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

動作

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バイト減らすことが読者の課題になっているが、22397にすればいいと思う。 余談だが、whileではなくforにすることでさらに1バイト減らせるような気がする。