aboutsummaryrefslogtreecommitdiffhomepage
path: root/services/nuldoc/public/blog/posts/2022-04-09/phperkaigi-2022-tokens
diff options
context:
space:
mode:
Diffstat (limited to 'services/nuldoc/public/blog/posts/2022-04-09/phperkaigi-2022-tokens')
-rw-r--r--services/nuldoc/public/blog/posts/2022-04-09/phperkaigi-2022-tokens/index.html419
1 files changed, 202 insertions, 217 deletions
diff --git a/services/nuldoc/public/blog/posts/2022-04-09/phperkaigi-2022-tokens/index.html b/services/nuldoc/public/blog/posts/2022-04-09/phperkaigi-2022-tokens/index.html
index c9e83d70..3a8e0490 100644
--- a/services/nuldoc/public/blog/posts/2022-04-09/phperkaigi-2022-tokens/index.html
+++ b/services/nuldoc/public/blog/posts/2022-04-09/phperkaigi-2022-tokens/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2022 トークン問題の解説|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=81dfc0b483beda175e3e17562faac7c9">
+ <link rel="stylesheet" href="/style.css?h=c3724e2d900f13528c82005e79a8ec23">
</head>
<body class="single">
<header class="header">
@@ -166,76 +166,75 @@
<div class="filename">
brainf_ck.php
</div>
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #6e7781">&lt;?php</span>
-
-<span style="color: #cf222e">declare</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #24292f;background-color: #f6f8fa">strict_types</span><span style="color: #0550ae">=</span><span style="color: #0550ae">0O1</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-
-<span style="color: #cf222e">namespace</span> <span style="color: #953800">Dgcircus\PHPerKaigi\Y2022</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-
-<span style="color: #6e7781">/**
- * @todo
- * Run this program to acquire a PHPer token.
- */</span>
-
-<span style="color: #24292f;background-color: #f6f8fa">https</span><span style="color: #0550ae">://</span><span style="color: #24292f;background-color: #f6f8fa">creativecommons</span><span style="color: #0550ae">.</span><span style="color: #24292f;background-color: #f6f8fa">org</span><span style="color: #0550ae">/</span><span style="color: #24292f;background-color: #f6f8fa">publicdomain</span><span style="color: #0550ae">/</span><span style="color: #24292f;background-color: #f6f8fa">zero</span><span style="color: #0550ae">/</span><span style="color: #0550ae">1.0</span><span style="color: #0550ae">/</span>
-
-<span style="color: #8250df">\error_reporting</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">~+!</span><span style="color: #0a3069">'We are hiring!'</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-
-<span style="color: #0550ae">$z</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$f</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$f</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(...</span><span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)(</span><span style="color: #0550ae">...</span><span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">)))(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$f</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(...</span><span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)(</span><span style="color: #0550ae">...</span><span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">)));</span>
-<span style="color: #0550ae">$id</span> <span style="color: #0550ae">=</span> <span style="color: #8250df">\spl_object_id</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">...</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-<span style="color: #0550ae">$put</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$c</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #8250df">\printf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'%c'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$c</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-<span style="color: #0550ae">$mm</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">new</span> <span style="color: #953800">\ArrayObject</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #8250df">\array_fill</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[],</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
-
-<span style="color: #f6f8fa;background-color: #82071e">$👉</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">++</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">];</span>
-<span style="color: #f6f8fa;background-color: #82071e">$👈</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">--</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">];</span>
-<span style="color: #f6f8fa;background-color: #82071e">$👍</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">]];</span>
-<span style="color: #f6f8fa;background-color: #82071e">$👎</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">--</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">]];</span>
-<span style="color: #f6f8fa;background-color: #82071e">$📝</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$put</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">])];</span>
-<span style="color: #f6f8fa;background-color: #82071e">$🤡</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">match</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">])</span> <span style="color: #24292f;background-color: #f6f8fa">{</span>
- <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$z</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">match</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$id</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">]))</span> <span style="color: #24292f;background-color: #f6f8fa">{</span>
- <span style="color: #0550ae">$b</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
- <span style="color: #0550ae">$e</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$n</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span> <span style="color: #0550ae">?</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span> <span style="color: #0550ae">:</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">--</span><span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
- <span style="color: #cf222e">default</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
- <span style="color: #24292f;background-color: #f6f8fa">})(</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">-!</span><span style="color: #24292f;background-color: #f6f8fa">[])],</span>
- <span style="color: #cf222e">default</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">],</span>
-<span style="color: #24292f;background-color: #f6f8fa">};</span>
-<span style="color: #f6f8fa;background-color: #82071e">$🎪</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">match</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">])</span> <span style="color: #24292f;background-color: #f6f8fa">{</span>
- <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">],</span>
- <span style="color: #cf222e">default</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$z</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">match</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$id</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">]))</span> <span style="color: #24292f;background-color: #f6f8fa">{</span>
- <span style="color: #0550ae">$e</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">--</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
- <span style="color: #0550ae">$b</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$n</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span> <span style="color: #0550ae">?</span> <span style="color: #0550ae">$pc</span><span style="color: #0550ae">+!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span> <span style="color: #0550ae">:</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">--</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">--</span><span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
- <span style="color: #cf222e">default</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">--</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
- <span style="color: #24292f;background-color: #f6f8fa">})(</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">-!</span><span style="color: #24292f;background-color: #f6f8fa">[])],</span>
-<span style="color: #24292f;background-color: #f6f8fa">};</span>
-<span style="color: #f6f8fa;background-color: #82071e">$🐘</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$z</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span>
- <span style="color: #cf222e">isset</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">])</span> <span style="color: #0550ae">&amp;&amp;</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">...</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">](</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)))</span>
-<span style="color: #24292f;background-color: #f6f8fa">)(</span><span style="color: #0550ae">$mm</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[],</span> <span style="color: #0550ae">+</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span><span style="color: #0550ae">.</span><span style="color: #0550ae">!</span><span style="color: #24292f;background-color: #f6f8fa">[])),</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$id</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #f6f8fa;background-color: #82071e">$🤡</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #0550ae">$id</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #f6f8fa;background-color: #82071e">$🎪</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[],</span> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]);</span>
-
-<span style="color: #f6f8fa;background-color: #82071e">$🐘</span><span style="color: #24292f;background-color: #f6f8fa">([</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$🤡</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$🎪</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
-<span style="color: #24292f;background-color: #f6f8fa">]);</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #6e7781">&lt;?php</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #cf222e">declare</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #24292f;background-color: #f6f8fa">strict_types</span><span style="color: #0550ae">=</span><span style="color: #0550ae">0O1</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #cf222e">namespace</span> <span style="color: #953800">Dgcircus\PHPerKaigi\Y2022</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #6e7781">/**</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * @todo</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * Run this program to acquire a PHPer token.</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> */</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">https</span><span style="color: #0550ae">://</span><span style="color: #24292f;background-color: #f6f8fa">creativecommons</span><span style="color: #0550ae">.</span><span style="color: #24292f;background-color: #f6f8fa">org</span><span style="color: #0550ae">/</span><span style="color: #24292f;background-color: #f6f8fa">publicdomain</span><span style="color: #0550ae">/</span><span style="color: #24292f;background-color: #f6f8fa">zero</span><span style="color: #0550ae">/</span><span style="color: #0550ae">1.0</span><span style="color: #0550ae">/</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #8250df">\error_reporting</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">~+!</span><span style="color: #0a3069">'We are hiring!'</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #0550ae">$z</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$f</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$f</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(...</span><span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)(</span><span style="color: #0550ae">...</span><span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">)))(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$f</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(...</span><span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)(</span><span style="color: #0550ae">...</span><span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">)));</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$id</span> <span style="color: #0550ae">=</span> <span style="color: #8250df">\spl_object_id</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">...</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$put</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$c</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #8250df">\printf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'%c'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$c</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$mm</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">new</span> <span style="color: #953800">\ArrayObject</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #8250df">\array_fill</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[],</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #f6f8fa;background-color: #82071e">$👉</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">++</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">];</span>
+</div><div class="codeblock-line"><span style="color: #f6f8fa;background-color: #82071e">$👈</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">--</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">];</span>
+</div><div class="codeblock-line"><span style="color: #f6f8fa;background-color: #82071e">$👍</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">]];</span>
+</div><div class="codeblock-line"><span style="color: #f6f8fa;background-color: #82071e">$👎</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">--</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">]];</span>
+</div><div class="codeblock-line"><span style="color: #f6f8fa;background-color: #82071e">$📝</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$put</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">])];</span>
+</div><div class="codeblock-line"><span style="color: #f6f8fa;background-color: #82071e">$🤡</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">match</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">])</span> <span style="color: #24292f;background-color: #f6f8fa">{</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$z</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">match</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$id</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">]))</span> <span style="color: #24292f;background-color: #f6f8fa">{</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">$b</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">$e</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$n</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span> <span style="color: #0550ae">?</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span> <span style="color: #0550ae">:</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">--</span><span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
+</div><div class="codeblock-line"> <span style="color: #cf222e">default</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
+</div><div class="codeblock-line"> <span style="color: #24292f;background-color: #f6f8fa">})(</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">-!</span><span style="color: #24292f;background-color: #f6f8fa">[])],</span>
+</div><div class="codeblock-line"> <span style="color: #cf222e">default</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">],</span>
+</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">};</span>
+</div><div class="codeblock-line"><span style="color: #f6f8fa;background-color: #82071e">$🎪</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">match</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">])</span> <span style="color: #24292f;background-color: #f6f8fa">{</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">],</span>
+</div><div class="codeblock-line"> <span style="color: #cf222e">default</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$z</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">match</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$id</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">]))</span> <span style="color: #24292f;background-color: #f6f8fa">{</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">$e</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">--</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">$b</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$n</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span> <span style="color: #0550ae">?</span> <span style="color: #0550ae">$pc</span><span style="color: #0550ae">+!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span> <span style="color: #0550ae">:</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">--</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">--</span><span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
+</div><div class="codeblock-line"> <span style="color: #cf222e">default</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">--</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$n</span><span style="color: #24292f;background-color: #f6f8fa">),</span>
+</div><div class="codeblock-line"> <span style="color: #24292f;background-color: #f6f8fa">})(</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">-!</span><span style="color: #24292f;background-color: #f6f8fa">[])],</span>
+</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">};</span>
+</div><div class="codeblock-line"><span style="color: #f6f8fa;background-color: #82071e">$🐘</span> <span style="color: #0550ae">=</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #0550ae">$z</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span>
+</div><div class="codeblock-line"> <span style="color: #cf222e">isset</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">])</span> <span style="color: #0550ae">&amp;&amp;</span> <span style="color: #0550ae">$loop</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">...</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">](</span><span style="color: #0550ae">$m</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$b</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$e</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$mp</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$pc</span><span style="color: #24292f;background-color: #f6f8fa">)))</span>
+</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">)(</span><span style="color: #0550ae">$mm</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[],</span> <span style="color: #0550ae">+</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span><span style="color: #0550ae">.</span><span style="color: #0550ae">!</span><span style="color: #24292f;background-color: #f6f8fa">[])),</span> <span style="color: #0550ae">$p</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$id</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #f6f8fa;background-color: #82071e">$🤡</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #0550ae">$id</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #f6f8fa;background-color: #82071e">$🎪</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[],</span> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]);</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #f6f8fa;background-color: #82071e">$🐘</span><span style="color: #24292f;background-color: #f6f8fa">([</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$🤡</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$🎪</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👍</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👉</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$👎</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #f6f8fa;background-color: #82071e">$👈</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #f6f8fa;background-color: #82071e">$📝</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">]);</span></div></code></pre>
</div>
<p>
この問題は、単に適切なバージョンの PHP で動かせばトークンが得られる。
@@ -260,29 +259,28 @@
なお、brainf*ck プログラムを普通の書き方で書くと、次のようになる。
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code>+ + + + + + + + + +
-[
- &gt; + + +
- &gt; + + + + +
- &gt; + + + + + + + + + + + +
- &gt; + + + + + + + + + +
- &lt; &lt; &lt; &lt; -
-]
-&gt; + + + + + .
-- - .
-&gt; - - - .
-&gt; - - - .
-- - .
-- .
-&lt; .
-&gt; &gt; - - .
-+ + + + + + + .
-&lt; - - - - .
-&lt; .
-&gt; + + .
-&gt; - .
-&lt; .
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line">+ + + + + + + + + +
+</div><div class="codeblock-line">[
+</div><div class="codeblock-line"> &gt; + + +
+</div><div class="codeblock-line"> &gt; + + + + +
+</div><div class="codeblock-line"> &gt; + + + + + + + + + + + +
+</div><div class="codeblock-line"> &gt; + + + + + + + + + +
+</div><div class="codeblock-line"> &lt; &lt; &lt; &lt; -
+</div><div class="codeblock-line">]
+</div><div class="codeblock-line">&gt; + + + + + .
+</div><div class="codeblock-line">- - .
+</div><div class="codeblock-line">&gt; - - - .
+</div><div class="codeblock-line">&gt; - - - .
+</div><div class="codeblock-line">- - .
+</div><div class="codeblock-line">- .
+</div><div class="codeblock-line">&lt; .
+</div><div class="codeblock-line">&gt; &gt; - - .
+</div><div class="codeblock-line">+ + + + + + + .
+</div><div class="codeblock-line">&lt; - - - - .
+</div><div class="codeblock-line">&lt; .
+</div><div class="codeblock-line">&gt; + + .
+</div><div class="codeblock-line">&gt; - .
+</div><div class="codeblock-line">&lt; .</div></code></pre>
</div>
<p>
実行結果はこちら: <a class="url" href="https://ideone.com/22VWmb" rel="noreferrer" target="_blank">https://ideone.com/22VWmb</a>
@@ -338,8 +336,7 @@
ソースコードのライセンスを示したこの部分だが、
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #24292f;background-color: #f6f8fa">https</span><span style="color: #0550ae">://</span><span style="color: #24292f;background-color: #f6f8fa">creativecommons</span><span style="color: #0550ae">.</span><span style="color: #24292f;background-color: #f6f8fa">org</span><span style="color: #0550ae">/</span><span style="color: #24292f;background-color: #f6f8fa">publicdomain</span><span style="color: #0550ae">/</span><span style="color: #24292f;background-color: #f6f8fa">zero</span><span style="color: #0550ae">/</span><span style="color: #0550ae">1.0</span><span style="color: #0550ae">/</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">https</span><span style="color: #0550ae">://</span><span style="color: #24292f;background-color: #f6f8fa">creativecommons</span><span style="color: #0550ae">.</span><span style="color: #24292f;background-color: #f6f8fa">org</span><span style="color: #0550ae">/</span><span style="color: #24292f;background-color: #f6f8fa">publicdomain</span><span style="color: #0550ae">/</span><span style="color: #24292f;background-color: #f6f8fa">zero</span><span style="color: #0550ae">/</span><span style="color: #0550ae">1.0</span><span style="color: #0550ae">/</span></div></code></pre>
</div>
<p>
完全に合法な PHP のコードである。 <code>https:</code> 部分はラベル、<code>//</code> 以降は行コメントになっている。
@@ -351,12 +348,11 @@
ソースコード中に、ほとんど数値リテラルが書かれていないことにお気づきだろうか。PHP では、型変換を利用することで任意の整数を作り出すことができる。
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">0</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]);</span>
-<span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">1</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">+!</span><span style="color: #24292f;background-color: #f6f8fa">[]);</span>
-<span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">2</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span><span style="color: #0550ae">+!</span><span style="color: #24292f;background-color: #f6f8fa">[]);</span>
-<span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">3</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span><span style="color: #0550ae">+!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span><span style="color: #0550ae">+!</span><span style="color: #24292f;background-color: #f6f8fa">[]);</span>
-<span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">10</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">+</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span><span style="color: #0550ae">.</span><span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]));</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">0</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]);</span>
+</div><div class="codeblock-line"><span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">1</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">+!</span><span style="color: #24292f;background-color: #f6f8fa">[]);</span>
+</div><div class="codeblock-line"><span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">2</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span><span style="color: #0550ae">+!</span><span style="color: #24292f;background-color: #f6f8fa">[]);</span>
+</div><div class="codeblock-line"><span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">3</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span><span style="color: #0550ae">+!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span><span style="color: #0550ae">+!</span><span style="color: #24292f;background-color: #f6f8fa">[]);</span>
+</div><div class="codeblock-line"><span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">10</span> <span style="color: #0550ae">===</span> <span style="color: #0550ae">+</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">!</span><span style="color: #24292f;background-color: #f6f8fa">[]</span><span style="color: #0550ae">.</span><span style="color: #0550ae">+!!</span><span style="color: #24292f;background-color: #f6f8fa">[]));</span></div></code></pre>
</div>
<p>
<code>[]</code> に <code>!</code> を適用すると <code>true</code> が返ってくる。それに <code>+</code> を適用すると、<code>bool</code> から <code>int</code> ヘの型変換が走り、<code>1</code> が生成される。<code>10</code> はさらにトリッキーだ。まず <code>1</code> と <code>0</code> を作り、<code>.</code> で文字列として結合する (<code>&apos;10&apos;</code>)。これに <code>+</code> を適用すると、<code>string</code> から <code>int</code> への型変換が走り、<code>10</code> が生まれる (コード量に頓着しないなら、<code>1</code> を 10 個足し合わせてももちろん 10 が作れる)。
@@ -394,41 +390,40 @@
<div class="filename">
riddle.php
</div>
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #6e7781">&lt;?php</span>
-
-<span style="color: #6e7781">/*********************************************************
- * This program displays a PHPer token. *
- * Guess 'N'. *
- * *
- * Hints: *
- * - N itself has no special meaning, e.g., 42, 8128, *
- * it is selected at random. *
- * - Each element of $token represents a single letter. *
- * - One letter consists of 5x5 cells. *
- * - Remember, the output is a complete PHPer token. *
- * *
- * License: *
- * https://creativecommons.org/publicdomain/zero/1.0/ *
- *********************************************************/</span>
-<span style="color: #cf222e">const</span> <span style="color: #953800">N</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">0</span> <span style="color: #6e7781">/* Change it to your answer. */</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-<span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">0</span> <span style="color: #0550ae">&lt;=</span> <span style="color: #953800">N</span> <span style="color: #0550ae">&amp;&amp;</span> <span style="color: #953800">N</span> <span style="color: #0550ae">&lt;=</span> <span style="color: #0550ae">0b11111_11111_11111_11111_11111</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-
-<span style="color: #0550ae">$token</span> <span style="color: #0550ae">=</span> <span style="color: #24292f;background-color: #f6f8fa">[</span>
- <span style="color: #0550ae">0x14B499C</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #0550ae">0x0BE34CC</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x01C9C69</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #0550ae">0x0ECA069</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x01C2449</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x0FDB166</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x01C9C69</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #0550ae">0x01C1C66</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x0FC1C47</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x01C1C66</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
- <span style="color: #0550ae">0x10C5858</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1E4E3B8</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1A2F2F8</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
-<span style="color: #24292f;background-color: #f6f8fa">];</span>
-<span style="color: #cf222e">foreach</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$token</span> <span style="color: #cf222e">as</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #24292f;background-color: #f6f8fa">{</span>
- <span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">^</span> <span style="color: #953800">N</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-
- <span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">sprintf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'%025b'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
- <span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">str_replace</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #24292f;background-color: #f6f8fa">search</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">'0'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'1'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">replace</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">' '</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'#'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">subject</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
- <span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #24292f;background-color: #f6f8fa">length</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">5</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
- <span style="color: #cf222e">echo</span> <span style="color: #0a3069">"</span><span style="color: #24292f">{</span><span style="color: #0550ae">$x</span><span style="color: #24292f">}</span><span style="color: #0a3069">\n\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-<span style="color: #24292f;background-color: #f6f8fa">}</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #6e7781">&lt;?php</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #6e7781">/*********************************************************</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * This program displays a PHPer token. *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * Guess 'N'. *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * Hints: *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * - N itself has no special meaning, e.g., 42, 8128, *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * it is selected at random. *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * - Each element of $token represents a single letter. *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * - One letter consists of 5x5 cells. *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * - Remember, the output is a complete PHPer token. *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * License: *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> * https://creativecommons.org/publicdomain/zero/1.0/ *</span>
+</div><div class="codeblock-line"><span style="color: #6e7781"> *********************************************************/</span>
+</div><div class="codeblock-line"><span style="color: #cf222e">const</span> <span style="color: #953800">N</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">0</span> <span style="color: #6e7781">/* Change it to your answer. */</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
+</div><div class="codeblock-line"><span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">0</span> <span style="color: #0550ae">&lt;=</span> <span style="color: #953800">N</span> <span style="color: #0550ae">&amp;&amp;</span> <span style="color: #953800">N</span> <span style="color: #0550ae">&lt;=</span> <span style="color: #0550ae">0b11111_11111_11111_11111_11111</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #0550ae">$token</span> <span style="color: #0550ae">=</span> <span style="color: #24292f;background-color: #f6f8fa">[</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">0x14B499C</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">0x0BE34CC</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x01C9C69</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">0x0ECA069</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x01C2449</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x0FDB166</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x01C9C69</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">0x01C1C66</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x0FC1C47</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x01C1C66</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">0x10C5858</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1E4E3B8</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1A2F2F8</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">];</span>
+</div><div class="codeblock-line"><span style="color: #cf222e">foreach</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$token</span> <span style="color: #cf222e">as</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #24292f;background-color: #f6f8fa">{</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">^</span> <span style="color: #953800">N</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">sprintf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'%025b'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">str_replace</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #24292f;background-color: #f6f8fa">search</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">'0'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'1'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">replace</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">' '</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'#'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">subject</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line"> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #24292f;background-color: #f6f8fa">length</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">5</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
+</div><div class="codeblock-line"> <span style="color: #cf222e">echo</span> <span style="color: #0a3069">"</span><span style="color: #24292f">{</span><span style="color: #0550ae">$x</span><span style="color: #24292f">}</span><span style="color: #0a3069">\n\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
+</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">}</span></div></code></pre>
</div>
<p>
さて、この問題はさきほどのように単純に実行しただけでは、謎のブロックが表示されるだけでトークンは得られない。トークンを得るためには、ソースコードを読み、定数 <code>N</code> を特定する必要がある。
@@ -442,38 +437,33 @@
まずはソースコードを読んでいく。
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #0550ae">$token</span> <span style="color: #0550ae">=</span> <span style="color: #24292f;background-color: #f6f8fa">[</span>
- <span style="color: #6e7781">// 略</span>
-<span style="color: #24292f;background-color: #f6f8fa">];</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #0550ae">$token</span> <span style="color: #0550ae">=</span> <span style="color: #24292f;background-color: #f6f8fa">[</span>
+</div><div class="codeblock-line"> <span style="color: #6e7781">// 略</span>
+</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">];</span></div></code></pre>
</div>
<p>
数値からなる <code>$token</code> があり、各要素をループしている。
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">^</span> <span style="color: #953800">N</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">^</span> <span style="color: #953800">N</span><span style="color: #24292f;background-color: #f6f8fa">;</span></div></code></pre>
</div>
<p>
まずは排他的論理和 (xor) を取り、
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">sprintf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'%025b'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">sprintf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'%025b'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span></div></code></pre>
</div>
<p>
二進数に変換して、
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">str_replace</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #24292f;background-color: #f6f8fa">search</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">'0'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'1'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">replace</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">' '</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'#'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">subject</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">str_replace</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #24292f;background-color: #f6f8fa">search</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">'0'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'1'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">replace</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">' '</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'#'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">subject</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span></div></code></pre>
</div>
<p>
0 を空白に、1 を <code>#</code> にし、
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #24292f;background-color: #f6f8fa">length</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">5</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #24292f;background-color: #f6f8fa">length</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">5</span><span style="color: #24292f;background-color: #f6f8fa">));</span></div></code></pre>
</div>
<p>
5文字ごとに区切ったあと、改行で結合している。
@@ -511,52 +501,49 @@
<code>N</code> は高々
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">0</span> <span style="color: #0550ae">&lt;=</span> <span style="color: #953800">N</span> <span style="color: #0550ae">&amp;&amp;</span> <span style="color: #953800">N</span> <span style="color: #0550ae">&lt;=</span> <span style="color: #0550ae">0b11111_11111_11111_11111_11111</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">0</span> <span style="color: #0550ae">&lt;=</span> <span style="color: #953800">N</span> <span style="color: #0550ae">&amp;&amp;</span> <span style="color: #953800">N</span> <span style="color: #0550ae">&lt;=</span> <span style="color: #0550ae">0b11111_11111_11111_11111_11111</span><span style="color: #24292f;background-color: #f6f8fa">);</span></div></code></pre>
</div>
<p>
なのでブルートフォースしてもよいが、ここではブルートフォースしない方法を紹介する。
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #6e7781">&lt;?php</span>
-
-<span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">0x14B499C</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-
-<span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">^</span> <span style="color: #953800">N</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-
-<span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">sprintf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'%025b'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-<span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">str_replace</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #24292f;background-color: #f6f8fa">search</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">'0'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'1'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">replace</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">' '</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'#'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">subject</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-<span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #24292f;background-color: #f6f8fa">length</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">5</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
-
-<span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span> <span style="color: #0550ae">===</span>
-<span style="color: #0a3069">" # # </span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
-<span style="color: #0a3069">"#####</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
-<span style="color: #0a3069">" # # </span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
-<span style="color: #0a3069">"#####</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
-<span style="color: #0a3069">" # # "</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #6e7781">&lt;?php</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">0x14B499C</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">^</span> <span style="color: #953800">N</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">sprintf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'%025b'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">str_replace</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #24292f;background-color: #f6f8fa">search</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">'0'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'1'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">replace</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">' '</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'#'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">subject</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #24292f;background-color: #f6f8fa">length</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">5</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #953800">assert</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span> <span style="color: #0550ae">===</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">" # # </span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">"#####</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">" # # </span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">"#####</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">" # # "</span><span style="color: #24292f;background-color: #f6f8fa">);</span></div></code></pre>
</div>
<p>
この一連の変換に対する逆変換を考えると、次のようになる。
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #6e7781">&lt;?php</span>
-
-<span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span>
-<span style="color: #0a3069">" # # </span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
-<span style="color: #0a3069">"#####</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
-<span style="color: #0a3069">" # # </span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
-<span style="color: #0a3069">"#####</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
-<span style="color: #0a3069">" # # "</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-
-<span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">''</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">explode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
-<span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">str_replace</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #24292f;background-color: #f6f8fa">search</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">' '</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'#'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">replace</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">'0'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'1'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">subject</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-<span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">bindec</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
-
-<span style="color: #0550ae">$n</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">^</span> <span style="color: #0550ae">0x14B499C</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-
-<span style="color: #cf222e">echo</span> <span style="color: #0a3069">"N = </span><span style="color: #0550ae">$n</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #6e7781">&lt;?php</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">" # # </span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">"#####</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">" # # </span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">"#####</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span> <span style="color: #0550ae">.</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">" # # "</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">''</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">explode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">str_replace</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #24292f;background-color: #f6f8fa">search</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">' '</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'#'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">replace</span><span style="color: #0550ae">:</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">'0'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0a3069">'1'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">subject</span><span style="color: #0550ae">:</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$x</span> <span style="color: #0550ae">=</span> <span style="color: #953800">bindec</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">);</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #0550ae">$n</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">$x</span> <span style="color: #0550ae">^</span> <span style="color: #0550ae">0x14B499C</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #cf222e">echo</span> <span style="color: #0a3069">"N = </span><span style="color: #0550ae">$n</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span></div></code></pre>
</div>
<p>
これを実行すると、<code>N</code> が得られる。
@@ -572,43 +559,41 @@
<div class="filename">
toquine.php
</div>
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #6e7781">&lt;?php</span>
-
-<span style="color: #6e7781">// License: https://creativecommons.org/publicdomain/zero/1.0/</span>
-<span style="color: #6e7781">// This is a quine-like program to generate a PHPer token.</span>
-<span style="color: #6e7781">// Execute it like this: php toquine.php | php | php | php | ...</span>
-
-<span style="color: #0550ae">$s</span> <span style="color: #0550ae">=</span> <span style="color: #0a3069">&lt;&lt;&lt;'Q'
-&lt;?cuc
-// Yvprafr: uggcf://perngvirpbzzbaf.bet/choyvpqbznva/mreb/1.0/
-// Guvf vf n dhvar-yvxr cebtenz gb trarengr n CUCre gbxra.
-// Rkrphgr vg yvxr guvf: cuc gbdhvar.cuc | cuc | cuc | cuc | ...
-%f$f = %f;
-$f = fge_ebg13($f); $kf = [
-%f,
-];
-$g = ahyy.snyfr; sbe ($v = 0; $v &lt;= vagqvi(__YVAR__-035,6); ++$v) vs (!vffrg($kf[$v])) oernx; ryfr
-$g .= vzcybqr("\a", fge_fcyvg(fge_ercynpr(['0','1'], [' ','##'], fcevags(pue(37) . '025o', $kf[$v])), 012)) . "\a\a";
-$jf = neenl_znc(sa($j) =&gt; vzcybqr(', ', $j), neenl_puhax(neenl_znc(sa($k) =&gt; fcevags('0k' . pue(37) . '07K', $k), $kf), 10));
-cevags($f, $g, fge_ebg13("&lt;&lt;&lt;'Q'\a{$f}\aQ"), vzcybqr(",\a", $jf));
-Q;</span>
-<span style="color: #0550ae">$s</span> <span style="color: #0550ae">=</span> <span style="color: #953800">str_rot13</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$s</span><span style="color: #24292f;background-color: #f6f8fa">);</span> <span style="color: #0550ae">$xs</span> <span style="color: #0550ae">=</span> <span style="color: #24292f;background-color: #f6f8fa">[</span>
-<span style="color: #0550ae">0x0AFABEA</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F294A7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F2109F</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F294A7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x0002800</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F2109F</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x0117041</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F294A7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1FAD6B5</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F295B7</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
-<span style="color: #0550ae">0x010FC21</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1FAD6B5</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1151151</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x010FC21</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F294A7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F295B7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1FAD6B5</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F294A7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F295B7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F8C63F</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
-<span style="color: #0550ae">0x1F8C631</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1FAD6B5</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x17AD6BD</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x17AD6BD</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F8C63F</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F295B7</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
-<span style="color: #24292f;background-color: #f6f8fa">];</span>
-<span style="color: #0550ae">$t</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">null</span><span style="color: #0550ae">.</span><span style="color: #0550ae">false</span><span style="color: #24292f;background-color: #f6f8fa">;</span> <span style="color: #cf222e">for</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$i</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">0</span><span style="color: #24292f;background-color: #f6f8fa">;</span> <span style="color: #0550ae">$i</span> <span style="color: #0550ae">&lt;=</span> <span style="color: #953800">intdiv</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">__LINE__</span><span style="color: #0550ae">-</span><span style="color: #0550ae">035</span><span style="color: #24292f;background-color: #f6f8fa">,</span><span style="color: #0550ae">6</span><span style="color: #24292f;background-color: #f6f8fa">);</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$i</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">!</span><span style="color: #cf222e">isset</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$i</span><span style="color: #24292f;background-color: #f6f8fa">]))</span> <span style="color: #cf222e">break</span><span style="color: #24292f;background-color: #f6f8fa">;</span> <span style="color: #cf222e">else</span>
-<span style="color: #0550ae">$t</span> <span style="color: #0550ae">.</span><span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">str_replace</span><span style="color: #24292f;background-color: #f6f8fa">([</span><span style="color: #0a3069">'0'</span><span style="color: #24292f;background-color: #f6f8fa">,</span><span style="color: #0a3069">'1'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">' '</span><span style="color: #24292f;background-color: #f6f8fa">,</span><span style="color: #0a3069">'##'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #953800">sprintf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">chr</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">37</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">.</span> <span style="color: #0a3069">'025b'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$i</span><span style="color: #24292f;background-color: #f6f8fa">])),</span> <span style="color: #0550ae">012</span><span style="color: #24292f;background-color: #f6f8fa">))</span> <span style="color: #0550ae">.</span> <span style="color: #0a3069">"</span><span style="color: #0a3069">\n\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
-<span style="color: #0550ae">$ws</span> <span style="color: #0550ae">=</span> <span style="color: #953800">array_map</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$w</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">', '</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$w</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #953800">array_chunk</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">array_map</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #953800">sprintf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'0x'</span> <span style="color: #0550ae">.</span> <span style="color: #953800">chr</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">37</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">.</span> <span style="color: #0a3069">'07X'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #0550ae">10</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
-<span style="color: #953800">printf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$s</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$t</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">str_rot13</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"&lt;&lt;&lt;'D'</span><span style="color: #0a3069">\n</span><span style="color: #24292f">{</span><span style="color: #0550ae">$s</span><span style="color: #24292f">}</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">D"</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">",</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$ws</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #6e7781">&lt;?php</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #6e7781">// License: https://creativecommons.org/publicdomain/zero/1.0/</span>
+</div><div class="codeblock-line"><span style="color: #6e7781">// This is a quine-like program to generate a PHPer token.</span>
+</div><div class="codeblock-line"><span style="color: #6e7781">// Execute it like this: php toquine.php | php | php | php | ...</span>
+</div><div class="codeblock-line">
+</div><div class="codeblock-line"><span style="color: #0550ae">$s</span> <span style="color: #0550ae">=</span> <span style="color: #0a3069">&lt;&lt;&lt;'Q'</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">&lt;?cuc</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">// Yvprafr: uggcf://perngvirpbzzbaf.bet/choyvpqbznva/mreb/1.0/</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">// Guvf vf n dhvar-yvxr cebtenz gb trarengr n CUCre gbxra.</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">// Rkrphgr vg yvxr guvf: cuc gbdhvar.cuc | cuc | cuc | cuc | ...</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">%f$f = %f;</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">$f = fge_ebg13($f); $kf = [</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">%f,</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">];</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">$g = ahyy.snyfr; sbe ($v = 0; $v &lt;= vagqvi(__YVAR__-035,6); ++$v) vs (!vffrg($kf[$v])) oernx; ryfr</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">$g .= vzcybqr("\a", fge_fcyvg(fge_ercynpr(['0','1'], [' ','##'], fcevags(pue(37) . '025o', $kf[$v])), 012)) . "\a\a";</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">$jf = neenl_znc(sa($j) =&gt; vzcybqr(', ', $j), neenl_puhax(neenl_znc(sa($k) =&gt; fcevags('0k' . pue(37) . '07K', $k), $kf), 10));</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">cevags($f, $g, fge_ebg13("&lt;&lt;&lt;'Q'\a{$f}\aQ"), vzcybqr(",\a", $jf));</span>
+</div><div class="codeblock-line"><span style="color: #0a3069">Q;</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$s</span> <span style="color: #0550ae">=</span> <span style="color: #953800">str_rot13</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$s</span><span style="color: #24292f;background-color: #f6f8fa">);</span> <span style="color: #0550ae">$xs</span> <span style="color: #0550ae">=</span> <span style="color: #24292f;background-color: #f6f8fa">[</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">0x0AFABEA</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F294A7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F2109F</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F294A7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x0002800</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F2109F</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x0117041</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F294A7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1FAD6B5</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F295B7</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">0x010FC21</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1FAD6B5</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1151151</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x010FC21</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F294A7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F295B7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1FAD6B5</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F294A7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F295B7</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F8C63F</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">0x1F8C631</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1FAD6B5</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x17AD6BD</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x17AD6BD</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F8C63F</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">0x1F295B7</span><span style="color: #24292f;background-color: #f6f8fa">,</span>
+</div><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">];</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$t</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">null</span><span style="color: #0550ae">.</span><span style="color: #0550ae">false</span><span style="color: #24292f;background-color: #f6f8fa">;</span> <span style="color: #cf222e">for</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$i</span> <span style="color: #0550ae">=</span> <span style="color: #0550ae">0</span><span style="color: #24292f;background-color: #f6f8fa">;</span> <span style="color: #0550ae">$i</span> <span style="color: #0550ae">&lt;=</span> <span style="color: #953800">intdiv</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">__LINE__</span><span style="color: #0550ae">-</span><span style="color: #0550ae">035</span><span style="color: #24292f;background-color: #f6f8fa">,</span><span style="color: #0550ae">6</span><span style="color: #24292f;background-color: #f6f8fa">);</span> <span style="color: #0550ae">++</span><span style="color: #0550ae">$i</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #cf222e">if</span> <span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">!</span><span style="color: #cf222e">isset</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$i</span><span style="color: #24292f;background-color: #f6f8fa">]))</span> <span style="color: #cf222e">break</span><span style="color: #24292f;background-color: #f6f8fa">;</span> <span style="color: #cf222e">else</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$t</span> <span style="color: #0550ae">.</span><span style="color: #0550ae">=</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">str_split</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">str_replace</span><span style="color: #24292f;background-color: #f6f8fa">([</span><span style="color: #0a3069">'0'</span><span style="color: #24292f;background-color: #f6f8fa">,</span><span style="color: #0a3069">'1'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0a3069">' '</span><span style="color: #24292f;background-color: #f6f8fa">,</span><span style="color: #0a3069">'##'</span><span style="color: #24292f;background-color: #f6f8fa">],</span> <span style="color: #953800">sprintf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">chr</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">37</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">.</span> <span style="color: #0a3069">'025b'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">[</span><span style="color: #0550ae">$i</span><span style="color: #24292f;background-color: #f6f8fa">])),</span> <span style="color: #0550ae">012</span><span style="color: #24292f;background-color: #f6f8fa">))</span> <span style="color: #0550ae">.</span> <span style="color: #0a3069">"</span><span style="color: #0a3069">\n\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">;</span>
+</div><div class="codeblock-line"><span style="color: #0550ae">$ws</span> <span style="color: #0550ae">=</span> <span style="color: #953800">array_map</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$w</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">', '</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$w</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #953800">array_chunk</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #953800">array_map</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #cf222e">fn</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">=&gt;</span> <span style="color: #953800">sprintf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">'0x'</span> <span style="color: #0550ae">.</span> <span style="color: #953800">chr</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">37</span><span style="color: #24292f;background-color: #f6f8fa">)</span> <span style="color: #0550ae">.</span> <span style="color: #0a3069">'07X'</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$x</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #0550ae">$xs</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #0550ae">10</span><span style="color: #24292f;background-color: #f6f8fa">));</span>
+</div><div class="codeblock-line"><span style="color: #953800">printf</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0550ae">$s</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$t</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #953800">str_rot13</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">"&lt;&lt;&lt;'D'</span><span style="color: #0a3069">\n</span><span style="color: #24292f">{</span><span style="color: #0550ae">$s</span><span style="color: #24292f">}</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">D"</span><span style="color: #24292f;background-color: #f6f8fa">),</span> <span style="color: #953800">implode</span><span style="color: #24292f;background-color: #f6f8fa">(</span><span style="color: #0a3069">",</span><span style="color: #0a3069">\n</span><span style="color: #0a3069">"</span><span style="color: #24292f;background-color: #f6f8fa">,</span> <span style="color: #0550ae">$ws</span><span style="color: #24292f;background-color: #f6f8fa">));</span></div></code></pre>
</div>
<p>
コメントにもあるとおり、次のようにして実行すれば答えがでてくる。
</p>
<div class="codeblock">
- <pre class="highlight" style="background-color:#f5f5f5"><code><span style="color: #24292f;background-color: #f6f8fa">$</span><span style="color: #24292f;background-color: #f6f8fa"> </span>php toquine.php | php | php | php | ...
-</code></pre>
+ <pre class="highlight" style="background-color:#f5f5f5"><code><div class="codeblock-line"><span style="color: #24292f;background-color: #f6f8fa">$</span><span style="color: #24292f;background-color: #f6f8fa"> </span>php toquine.php | php | php | php | ...</div></code></pre>
</div>
<p>
実際にはもう少しパイプで繋げなければならない。