Symbolic quine

Perl で記号だけ (ASCII が 32-126 で ~/\W/ なものと改行のみ) で Quine を書く努力をしていました。なんか最初は 300Byte 近くだったんだけどゴルフしてるうちに 103Byte まで。

($;=<<''
#&-!!*!%>{(\$;=<<''
$;
)=~('
_ ^-^,'^'"`[;[?@(\$;^\$^)})')+

)=~('
_ ^-^,'^'"`[;[?@($;^$^)})')

なんか色々やってるうちに Ruby の最短 に似てきたのでした。

追記: せっかくなので顔文字を埋めてみた。顔文字埋めてる場合じゃなくてまだ縮んだ。

何やってるかっていうとなんか ;''=~ から先が要は eval($;^$^) というコードを実行していて、 $;^$^ は xxxa+print"\$;=<<'_' ..." とかいう感じの自分自身を吐き出すコードになってます。 $^ eq 'STDOUT_TOP' に依存。

やってるうちにヒアドキュメントはコンパイル時定数じゃないとかどうでもいいことを色々知ってどうでも良かった。

あとこんな Hello, world! が副産物としてできました。

''=~('OTLOTLOTL OTLOTLOTLOTLOTL'^'gk7?&%! nh*8  t; & +uFm)e')

追記: 書いてるうちに縮むから困る。

追記追記: なんかまだ縮む気がするけどねむい。

追記追記追記: 縮むかと思ったけどなんか長くなった。 106Byte 。なんか普通。

($;=<<''
)=~('"_%-,@@*'^'
`^]^).^"(\$;=<<\'\'
$;
$;"})')

)=~('"_%-,@@*'^'
`^]^).^"(\$;=<<\'\'
$;
$;"})')
なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h