quineclock

時計の絵をかいたら時計になるなんて、Ruby はとっても宣言的な言語ですね!

           eval s=%w(0;y=""<
        <32;z="eval((;s=%w(#{s}
     )*''));;     %"      <<43<<s;
    d="";"        0v         vvnvn2
  mj4kil          0v           lvvul2
 6l94ol           0v            lv7vv"
.scan             (/              .{7}/
){|n|             2.              times
{d.<              <T               ime.
now.              to_s.unpack("    C*")
[11,              8].map{|i|("%    03b"
.%7&n                             .to_i
(32)>                             >3*i-
 =48).g                         sub(/.
  /){s>$                       &?y*3:
    z.slic                   e!(0,3
     )}}*y<<1             0}};puts
        (d.strip.chop<<43))*''#
           #(c) Y.Endoh 2009

こんな風に実行します。ruby 1.8 でも 1.9 でも動くと思う。

$ ruby quineclock.rb | tee q.rb
$ ruby q.rb
$ ruby q.rb
$ ruby q.rb

よくわからなかったら、画面から離れて目を細めてみてね。