Best one liner

最高のワンライナー。

受賞者:Jan Stein

引用元:https://www.ioccc.org/1986/stein/stein.c

審査員・作者による説明:https://www.ioccc.org/1986/stein/hint.html

動作

HHMMSSで現在時刻を表示する(UTC)。当時の期待通りに動かすのはちょっと工夫が必要。詳しくは解説を参照のこと。

$ gcc -o stein stein.c

$ ruby -e 'system(["./stein", "a.out"], "\C-m\C-l")'
120000

解説

time(2)の結果を86400で割った余りをHHMMSSに変換する。mainを6回ほど再帰呼び出しすることで1文字ずつ10進変換する。

バッファとしてargvを使う。 hint.textによると、a.out ^N^Nと呼び出せとあるので、argva.out\0\n\n\0\0という状態で起動されることが想定されていると思われる。 最初の6文字を時刻の6文字で上書きして表示する。

しかし、現代ではPATHにカレントディレクトリを含まないのが普通なので、a.outで起動することはできず、面倒くさいことになる。 上記の実行例ではrubyを使ってargvを詐称して呼び出すようにしている。

補足:^N\016であって\nではないかも。当時の端末で\016\016(シフトアウト2つ)がどのように表示されていたのかはわからない。 環境によっては^M^Lにしろとも書いてあり、これは\r\fなのでわかりやすい。

clangはmainの第2引数がchar**でないと怒るので書き換えが必要。