Quine ruBy - まめめも
僕みたいなruby素人には何やっているのかよくわからない ><
のでperl版を作ってみた。
eval (($q ||=q{1; $b=qq{$ q\x7d))}. join(chr( 2 +30)x11,( ";","BEGIN" .'{$^H|=' . ( "0x800000"),q"}eval$b"));$b=~s/\e\[.* ? m //xg;for(28,5,45,5,53,58,86,30,1, ( ( 43)),58,86,30,1,53,58,31,2,43,58,31,2 , 55,5,45,5){$~=(0,"48;5;9","48;5;1","48;5" .";15")[$_/28];substr($b,517+$i+($_%28),0 ,() ."\e[$~m");$i+=length($~)+3+($_%28) };( $n= ($q+1)%2);$b=~s/./$n/;($qb='M("`@("`@ Y8. 5XX& HY:61 Y[2$XX&7XX&F4&5R; $UO;F =E<N .!J^ .!JN. !H ^.!MIN:LLN.!E^. !A .."D^ .!H" P@("` @("`@ ("`@("`@("#ED)O C@9_C @:\'C @:_CM @83C@: 3C@H+C@9WC@8;C@:# C@:T*5 $U43U =41$GC @:CC@83C@:/C@:;ECZ_HMJJWF@*?C@:[DO8[C@8 3C@K/C @[SC@X GC@I+FF[CC@8\NZ*BSXX&,Y8B&XX&+,XX*)XX&J XX&$XX *(')=~s/ \x20|\x0a|\e.* ? m //xg;print((q[ ]x5)."e" ."val". ("\x20"x39).(' q '?"":q{b}x999) .q'(($q '.($"x5) .q{||=q}."\x7b"."$b".('`%'^'[/'). "\x0a". (split+( /\x2c/,unpack+q"u",$qb))[$n ]."\n"); exit})); BEGIN{$^H|=0x800000 }eval$b;
https://gist.github.com/920047
あんまりカッコ良くないけど一応ほぼ同じ手法でquineさせてるはず。色いじるところはちょっとオリジナルでアレンジ。
$ perl qb.pl $ perl qb.pl | perl $ perl qb.pl | perl | perl
台詞が思い浮かばなかったのと能力不足で2パターンまでしか作れなかった…