回文になっている quine です。以下のように動けば正解です。
$ ruby pquine.rb > pquine2.rb $ diff pquine.rb pquine2.rb $ ruby -e 's = File.read("pquine.rb"); p(s == s.reverse)' true
以下は僕の考えた解答。
どれも改行コードは LF で、ファイル末尾に改行をつけないで実行してください。
まずはインチキ。
DATA.rewind $> << DATA.read __END__ __DNE__ daer.ATAD << >$ dniwer.ATAD
一行コメントを使うとわりと簡単。
eval s="$><<\"eval s=\#{t=s.inspect}#\"+(s[5,7]+t).reverse"#"esrever.)t+]7,5[s(+"\#}tcepsni.s=t{#\=s lave"\<<>$"=s lave
method_missing で。
s=<<ab def method_missing*x;0;end alias dne print;nigeb;dne"s=<<ab "+s+"ab eval s;s lave ba "<<s.chomp.reverse<<" ba<<=s" nigeb;begin;end fednu !eniuq cimordnilap ab eval s;s lave ba palindromic quine! undef dne;nigeb;begin "s=<<ab "<<esrever.pmohc.s<<" ab eval s;s lave ba"+s+" ba<<=s"end;begin;tnirp end saila dne;0;x*gnissim_dohtem fed ba<<=s