diff options
| author | nsfisis <nsfisis@gmail.com> | 2023-09-20 19:56:52 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2023-09-20 19:56:57 +0900 |
| commit | a84908b7e8a0e2423afd6b836eccf27a420270b4 (patch) | |
| tree | 00204b62358f8c57fcb36f601db360626484cc1a /vhosts/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1 | |
| parent | 0b488f85380f964c40b0b9aae69c6611bc7978bc (diff) | |
| download | nsfisis.dev-a84908b7e8a0e2423afd6b836eccf27a420270b4.tar.gz nsfisis.dev-a84908b7e8a0e2423afd6b836eccf27a420270b4.tar.zst nsfisis.dev-a84908b7e8a0e2423afd6b836eccf27a420270b4.zip | |
feat(blog/nuldoc): change content format from DocBook to NulDoc
Diffstat (limited to 'vhosts/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1')
| -rw-r--r-- | vhosts/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/vhosts/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html b/vhosts/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html index eaa210c5..1c661438 100644 --- a/vhosts/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html +++ b/vhosts/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html @@ -81,7 +81,7 @@ 注意: これはボツ問なので、得られたトークンを PHPerKaigi で入力してもポイントにはならない。 </p> - <pre class="highlight" language="php" linenumbering="unnumbered"><code class="highlight"><span class="hljs-meta"><?php</span> + <pre class="highlight" language="php"><code class="highlight"><span class="hljs-meta"><?php</span> $π = <span class="hljs-variable">$argv</span>[<span class="hljs-number">1</span>] ?? <span class="hljs-literal">null</span>; <span class="hljs-keyword">if</span> ($π === <span class="hljs-literal">null</span>) { @@ -110,14 +110,14 @@ $π = <span class="hljs-title function_ invoke__">trim</span>($π); ソースを見るとわかるとおり、<code>$argv[1]</code> を参照している。 それを <code>$π</code> なる変数に代入しているので、円周率を渡してみる。 </p> - <pre class="highlight" language="shell-session" linenumbering="unnumbered"><code>$ php Q.php 3.14 + <pre class="highlight" language="shell-session"><code>$ php Q.php 3.14 Failed.</code></pre> <p> 失敗してしまった。精度を上げてみる。 </p> - <pre class="highlight" language="shell-session" linenumbering="unnumbered"><code>$ php Q.php 3.1415 + <pre class="highlight" language="shell-session"><code>$ php Q.php 3.1415 Failed.</code></pre> <p> @@ -128,7 +128,7 @@ Failed.</code></pre> 最初にトークンが得られるのは、小数点以下 16 桁目まで入力したときで、こうなる。 </p> - <pre class="highlight" language="shell-session" linenumbering="unnumbered"><code>$ php Q.php 3.1415926535897932 + <pre class="highlight" language="shell-session"><code>$ php Q.php 3.1415926535897932 Token: #YO</code></pre> <p> @@ -142,7 +142,7 @@ Token: #YO</code></pre> 短いので頭から追っていく。 </p> - <pre class="highlight" language="php" linenumbering="unnumbered"><code class="highlight">$π = <span class="hljs-variable">$argv</span>[<span class="hljs-number">1</span>] ?? <span class="hljs-literal">null</span>; + <pre class="highlight" language="php"><code class="highlight">$π = <span class="hljs-variable">$argv</span>[<span class="hljs-number">1</span>] ?? <span class="hljs-literal">null</span>; <span class="hljs-keyword">if</span> ($π === <span class="hljs-literal">null</span>) { <span class="hljs-keyword">exit</span>(<span class="hljs-string">'No input.'</span>); } @@ -155,7 +155,7 @@ $π = <span class="hljs-title function_ invoke__">trim</span>($π); 入力のバリデーション部分。数値のみ受け付ける。 </p> - <pre class="highlight" language="php" linenumbering="unnumbered"><code class="highlight"><span class="hljs-variable">$s</span> = <span class="hljs-title function_ invoke__">implode</span>(<span class="hljs-title function_ invoke__">array_map</span>(<span class="hljs-title function_ invoke__">chr</span>(...), <span class="hljs-title function_ invoke__">str_split</span>($π, <span class="hljs-number">2</span>)));</code></pre> + <pre class="highlight" language="php"><code class="highlight"><span class="hljs-variable">$s</span> = <span class="hljs-title function_ invoke__">implode</span>(<span class="hljs-title function_ invoke__">array_map</span>(<span class="hljs-title function_ invoke__">chr</span>(...), <span class="hljs-title function_ invoke__">str_split</span>($π, <span class="hljs-number">2</span>)));</code></pre> <p> <code>$π</code> を 2 文字ごとに区切り (<code>str_split</code>)、 数値を ASCII コードと見做して文字に変換 (<code>chr</code>) して結合 (<code>implode</code>) している。 @@ -165,12 +165,12 @@ $π = <span class="hljs-title function_ invoke__">trim</span>($π); 例えば、<code>$π</code> が <code>'656667'</code> だったとすると、 <code>65</code>、<code>66</code>、<code>67</code> に対応した <code>'A'</code>、<code>'B'</code>、<code>'C'</code> へと変換され、<code>'ABC'</code> になる。 </p> - <pre class="highlight" language="php" linenumbering="unnumbered"><code class="highlight">$π = <span class="hljs-string">'656667'</span>; + <pre class="highlight" language="php"><code class="highlight">$π = <span class="hljs-string">'656667'</span>; <span class="hljs-variable">$s</span> = <span class="hljs-title function_ invoke__">implode</span>(<span class="hljs-title function_ invoke__">array_map</span>(<span class="hljs-title function_ invoke__">chr</span>(...), <span class="hljs-title function_ invoke__">str_split</span>($π, <span class="hljs-number">2</span>))); <span class="hljs-keyword">echo</span> <span class="hljs-variable">$s</span>; <span class="hljs-comment">// => ABC</span></code></pre> - <pre class="highlight" language="php" linenumbering="unnumbered"><code class="highlight"><span class="hljs-title function_ invoke__">preg_match</span>(<span class="hljs-string">'/(\x23.+?) /'</span>, <span class="hljs-variable">$s</span>, <span class="hljs-variable">$m</span>); + <pre class="highlight" language="php"><code class="highlight"><span class="hljs-title function_ invoke__">preg_match</span>(<span class="hljs-string">'/(\x23.+?) /'</span>, <span class="hljs-variable">$s</span>, <span class="hljs-variable">$m</span>); <span class="hljs-variable">$t</span> = <span class="hljs-variable">$m</span>[<span class="hljs-number">1</span>] ?? <span class="hljs-string">''</span>;</code></pre> <p> @@ -181,7 +181,7 @@ $π = <span class="hljs-title function_ invoke__">trim</span>($π); なお、<code>#</code> を直接書いていないのは、<code>/#.+?) /</code> と書くと、 <code>#.+?)</code> という意図せぬトークンが登録されてしまうからである。 </p> - <pre class="highlight" language="php" linenumbering="unnumbered"><code class="highlight"><span class="hljs-keyword">if</span> (<span class="hljs-title function_ invoke__">md5</span>(<span class="hljs-variable">$t</span>) === <span class="hljs-string">'056e831a4146bf123e8ea16613303d2e'</span>) { + <pre class="highlight" language="php"><code class="highlight"><span class="hljs-keyword">if</span> (<span class="hljs-title function_ invoke__">md5</span>(<span class="hljs-variable">$t</span>) === <span class="hljs-string">'056e831a4146bf123e8ea16613303d2e'</span>) { <span class="hljs-keyword">echo</span> <span class="hljs-string">"Token: <span class="hljs-subst">{$t}</span>\n"</span>; } <span class="hljs-keyword">else</span> { <span class="hljs-keyword">echo</span> <span class="hljs-string">"Failed.\n"</span>; |
