python的quine

Quineとはなんぞや。
その昔人類は質量保存の法則を発見した。ひとびとはこの発見を多いに喜んだ。ちょうど同じころ、プログラミングを習い始めた少女がいた。
少女はちょうど出力を勉強していた。どうやらpythonではprintという制御文がありそれによって出力ができるようだ。 だから

print 1+2 ##3
print "hogehoge" ##hogehoge

こんなかんじで絶対に出力するものはプログラム本体とは異なってくる。ループを使うことでソースコードよりも長いものを出力することもできるが一致することはない。誰もがそう思っていた。 しかしこの少女、出力を習いたて。もしソースコードと同じものを出力するソースコードを組んだら質量保存の法則によって諦めかけていた第2種永久機関に当たるんじゃなかろうと考えた。 そこで彼女はそんなプログラムをQuineと名付け開発に励んだ。 そこで一番最初に生み出されたのがこれである。

print open(__file__,"r").read()[:-1]

彼女は世紀最大の発見をしたのであった!しかし
「おいちょっとまてファイル名読むのはおかしいだろ」「だいたいなんで自分と同じもの出力したら永久機関になるんだよ、PCについてるバッテリーが見えないのか」「そんなんならRubyのほうが短く書けるし」「ていうか自分と同じもの出力するものに価値はあるのかよ」
心ない市民たちのバッシングを受け彼女は電脳魔女裁判にかけられてしまった。 電脳魔女裁判ではいままで何人もの魔導書著者が処刑されていた。しかし魔導書を出版も執筆もしていない人間が電脳魔女裁判にかけられるのは異例であった。 結果的に彼女は名を残さず死んで言ったが、現代の電脳魔女裁判研究者たちによって彼女の実績"Quine"は現代のプログラマーたちに知らしめられた。 そして同じものを出力するだけでなく、「同じ機能」を持つものを出力するという定義に変わり、現代でも小さく有名になっているのであった。

なんでやねん

さて、今回はPythonでQuineを書きます。ついでに時計です。ミリ秒単位まで教えてくれます。

いかんせん出力の横幅が長いものですから、エディタのフォントサイズを小さくするなり何なりで頑張ってみてください。
それにQuineなだけあって出力したものもソースコードになっています パイプしたり保存しなおしたりして実行してみてください。
おわり。