最高のワンライナー
受賞者:Laurion Burchall
動作・解説にジャンプ »
引用元:https://www.ioccc.org/1994/ldb.c
審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/1994/ldb.hint
標準入力から1行をランダムに選んで出力する。
$ cat rsp.txt rock scissors paper $ gcc -trigraphs -o ldb ldb.c $ ./ldb < rsp.txt rock $ ./ldb < rsp.txt paper $ ./ldb < rsp.txt rock $ ./ldb < rsp.txt scissors
trigraphを使っているワンライナー。 コードの構造はwhile(<cond>);だけ。
while(<cond>);
アルゴリズムがちょっと面白い。 1行目は100%の確率で選ぶ、2行目は1/2の確率で選ぶ、3行目は1/3の確率で選ぶ、4行目は1/4の確率で選ぶ、……と進めていき、最後に選んだ行を出力する。 これですべての行を公平に選べる。