Quine ruBy

略して QB 。

     eval                                       s||=
     %q(1;t=                                 %w(s.gs
      ub!(/\e.*                           ?m/,"");[
      [  0x26e885c     a844a879e27     a,519,48,  5
       ,  9],[20182686,600,48,5,1],[4366,611,48  ,
       5    ,15],[432803624050570,533,0]].map    {
        | r,m,*d|s[m+=r%74,0],r="\e[#{d*";"}m", r
        /74while(r>0)};puts((z=32.chr)*5+"eval#{z
        *39}s||=\n#{z*5}%q(#{(1+n=s.to_i)%3}#{s[1
       ..- 1]})\n\n"+z*9*n+"5YOV44GvUnVieWlzdO OBq
      +OB quOBo+OBpuOBj+OCjOOBo+OBpuOAgeOBjeOBo eOC
     k+OB qOOBi     umhmOOBhOOBl+OBn+     OBr+O BmuO
    BoOO CiO+8    nw ogIOWun+mam+OBr    ui ogOiq nuS7
   leanm OOBjO       OBqeOBhuOBhOOBh       uOCgu OBruO
   Bi+OA geiqrO     aYjuOCkuecgeeVpeO     Bl+OBn +OBke
  OCjOOB qeOAgi/lg5XjgajlpZHntITjgZfjgabjgIFSdWJ 5aXN04
  4Gr44G q44Gj44Gm5qyy44GX44GE44KT44GgL+WQm+OBn+ OBoeOB
 r+OBhOOB pOOCguOBneOBhu  O   B  oOOBreOAggrkup Lmj5vmgK
 fjgafjg   4/jg57jgovjgaj   m   sbrjgb7jgaPjga   blkIzjg
Zjlj43lv    5zjgpLjgZnjgovjgILoqLPjgYzliIbjgY    vjgonjga
rjgYTjgo       g=".gsub(/\e.*?m/,"").unpac       k("m")[0
].split(           "/")[n]);exit)*"";;           eval(t))

以下のように実行してください。未だに 1.8 を使ってる時代遅れ過ぎな人は -Ku を付けて。

$ ruby qb.rb
$ ruby qb.rb | ruby
$ ruby qb.rb | ruby | ruby
$ ruby qb.rb | ruby | ruby | ruby