quine

0pt

クワイン。自分自身を吐き出すコードのこと

作り方
http://d.hatena.ne.jp/bellbind/20081101/1225491517

PHPquine

1行で書ける!PHP最強!

readfile(__FILE__);


正攻法。

<?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のコードを<A>、Bのコードを<B>とする。
Aは<B>を記録する。
BはAの記録から<B>を知り、
<B>を出力するようなプログラム(つまりA)のコード(つまり<A>)を求め、
<A><B>を出力する。

<A>と<B>を書き下す過程は循環しない。2つは同時にできあがる。

次の文に対してコピーを二つ書き、二つ目のコピーは、かぎ括弧で囲め。
『次の文に対してコピーを二つ書き、二つ目のコピーは、かぎ括弧で囲め。』

http://www.unfindable.net/~yabuki/article/self.html

「quine」について友人に書いてもらう。

あなたにとって「quine」とは?

ログインするとワンクリックでキーワードを投稿できます

ログインする 新規登録する

他の人の「quine」を見る