最高のワンライナー
引用元:https://www.ioccc.org/1994/ldb/ldb.orig.c
審査員・作者による説明:https://www.ioccc.org/1994/ldb/index.html
標準入力から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>);だけ。
アルゴリズムがちょっと面白い。 1行目は100%の確率で選ぶ、2行目は1/2の確率で選ぶ、3行目は1/3の確率で選ぶ、4行目は1/4の確率で選ぶ、……と進めていき、最後に選んだ行を出力する。 これですべての行を公平に選べる。