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