今夜は、年に一度の W. V. Quine の命日イブです。
%;';;X= %q(x=1; z="%c"% 32;eval %w(w=N= Merry =128;r= z*79+$/; ;p=open" / dev/dsp ","w"rescue$_;/ / ;eval"s rand(%s)"%$*[ d=0];a=[];s=(r+z+% (%;';;X=#{z* 3}%q(#{X});e val(X)) +r*=23).l ines.map{|l|l.chop+ r};t=proc{|y|s [y][x-1,w].sca n(/\S /){s[y+1][m=x -1+$` .size ,1]== z&&a< <[$&,m, y,s[y ][m]=$/]};y};t[ 23];f =(0.. 1071) .map{|i|c,x,y =a.shuffle!. pop;s [y][x]=z ;[794-46 .03*i **0.4 +y/k= (3+ra nd*w= 3)/9,[t [t[y]-1 ],x,c], (0..y /k).m ap{[y -=k,0.5+x+=k*r and*2-k,?*]}]} ;"|ii xCG40_| CK8&d9B ix0,B J?B?G ^K9CG CJ|ii>Ci?9CV; =*-*.sEA.2gA w>dc= : `:z:J> s 9QvA:> J taaA>` : @AP;Fa c y =Anm|?Bdqr h ?<CDJCD<IU < DuCJ>:d_C? h ?<CWC:'.'+ r 9 A.*. '>| =*- * .:9i 9A> :JC s :Q> :>9 CJA= g `;C i9A >M". b yt es{|c|a+=([% [+. 5$2-'30&)"/: (7% !*][c%19].or d]* [47,23,11][4 -c /1 9]< <3 3). *c/ 95 +1} ;$ ><< (T= "% q\x 7e ' #{e="\x1 b [ "}H#{e}J # { e}?25")+ " l ";863.do w n to(0){|i|b=r + [ "'"*25]*2*"_ ( c )_2010_@mame t t er,@hirekoke " ;f.map{ |j,x,v |i<j&&( y,x,c= v.pop| |x;x<0| |x>78| |b[x+y. to_i*80]=0<i&&i< 40??#:c)};($><<( i>0?e+"H":T+"h") +b).flush;(p)?4. times{N. times{v =8;4.tim es{|l|t =a[l*N* 9+d/N%11 52];t>3 3&&v+=(d *0.11*4**(t/24 .0-l%3))%8<=>4 };d+=1;p<<[16* v].pack("C*")} ;p.flush}: sleep(0.1) };puts)*"" ;);eval(X) '''''''''''''''''''''''''_(c)_2010_@mametter,@hirekoke'''''''''''''''''''''''''
80x24 の端末上で動かしてください。/dev/dsp が使える環境では音が鳴ります (使えなくても動作はします) 。windows なら cygwin でどうぞ。Linux だと aoss や padsp を使うといいかもしれません。ruby 1.8.7p299 と 1.9.2p0 で動作確認しています。
自分で動かすのが面倒な人用の動画。