quine
第 3 版(2009-05-16 05:34:56 · akkun_choi)を表示しています。 最新版に戻る
自分自身を吐き出すコードのとこ
作り方
http://d.hatena.ne.jp/bellbind/20081101/1225491517
PHP版quine
readfile(__FILE__);
これはジョークw
<?php
$str = array(
'echo "<?php\n\$str = array(\n";',
'array_walk($str, \'hoge\');',
'echo ");\n";',
'echo join("\n", $str) . "\n";',
'echo "?>";',
'function hoge($s){echo " \'".str_replace(chr(0x27), chr(0x5c).chr(0x27), $s)."\',\n";}',
);
echo "<?php\n\$str = array(\n";
array_walk($str, 'hoge');
echo ");\n";
echo join("\n", $str) . "\n";
echo "?>";
function hoge($s){echo " '".str_replace(chr(0x27), chr(0x5c).chr(0x27), $s)."',\n";}
?>
前半と後半に分けて変換関数で再現。「'」とか「\」を文字コードで扱う
プログラムは2つの部分A,Bからなる。Aのコードを、Bのコードをとする。
Aはを記録する。
BはAの記録からを知り、
を出力するようなプログラム(つまりA)のコード(つまり)を求め、
を出力する。次の文に対してコピーを二つ書き、二つ目のコピーは、かぎ括弧で囲め。
『次の文に対してコピーを二つ書き、二つ目のコピーは、かぎ括弧で囲め。』