diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-06-15 13:12:46 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-06-15 13:13:24 +0900 |
| commit | a65bb9609284d273f0aa232dbaf69597c87f5a12 (patch) | |
| tree | bec63ad11f79fee55dd07c27625c5f692af2b7aa /vhosts/blog/public/posts/2022-04-09/phperkaigi-2022-tokens | |
| parent | c2252e60d3ab192271e4241943dd165087567af8 (diff) | |
| download | nsfisis.dev-a65bb9609284d273f0aa232dbaf69597c87f5a12.tar.gz nsfisis.dev-a65bb9609284d273f0aa232dbaf69597c87f5a12.tar.zst nsfisis.dev-a65bb9609284d273f0aa232dbaf69597c87f5a12.zip | |
feat(blog/nuldoc): merge consecutive text nodes
Diffstat (limited to 'vhosts/blog/public/posts/2022-04-09/phperkaigi-2022-tokens')
| -rw-r--r-- | vhosts/blog/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/vhosts/blog/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html b/vhosts/blog/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html index 581e229f..46ccdb89 100644 --- a/vhosts/blog/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html +++ b/vhosts/blog/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html @@ -263,7 +263,7 @@ <section id="section--q1-brainfuck--commentary--numbers"> <h4><a href="#section--q1-brainfuck--commentary--numbers">リテラルなしで数値を生成する</a></h4> <p> - ソースコード中に、ほとんど数値リテラルが書かれていないことにお気づきだろうか。 PHP では、型変換を利用することで任意の整数を作り出すことができる。 + ソースコード中に、ほとんど数値リテラルが書かれていないことにお気づきだろうか。PHP では、型変換を利用することで任意の整数を作り出すことができる。 </p> <div class="codeblock"> <pre class="shiki github-light" style="background-color:#f5f5f5;color:#24292e" tabindex="0"><code><span class="line"><span style="color:#005CC5">assert</span><span style="color:#24292E">(</span><span style="color:#005CC5">0</span><span style="color:#D73A49"> ===</span><span style="color:#D73A49"> +!!</span><span style="color:#24292E">[]);</span></span> @@ -282,7 +282,7 @@ <section id="section--q1-brainfuck--commentary--conditionals"> <h4><a href="#section--q1-brainfuck--commentary--conditionals"><code>if</code> 文なしで条件分岐</a></h4> <p> - 三項演算子ないし <code>match</code> 式を使うことで、<code>if</code> を一切書かずに条件分岐ができる。 また、<code>&&</code> / <code>||</code> も使えることがある。 遅延評価が不要なケースでは、<code>[$t, $f][$cond]</code> のような形で分岐することもできる。 + 三項演算子ないし <code>match</code> 式を使うことで、<code>if</code> を一切書かずに条件分岐ができる。 また、<code>&&</code> / <code>||</code> も使えることがある。遅延評価が不要なケースでは、<code>[$t, $f][$cond]</code> のような形で分岐することもできる。 </p> </section> <section id="section--q1-brainfuck--commentary--loops"> @@ -344,7 +344,7 @@ <span class="line"><span style="color:#24292E">}</span></span></code></pre> </div> <p> - さて、この問題はさきほどのように単純に実行しただけでは、謎のブロックが表示されるだけでトークンは得られない。 トークンを得るためには、ソースコードを読み、定数 <code>N</code> を特定する必要がある。 + さて、この問題はさきほどのように単純に実行しただけでは、謎のブロックが表示されるだけでトークンは得られない。トークンを得るためには、ソースコードを読み、定数 <code>N</code> を特定する必要がある。 </p> <p> ここでは、私の想定解を解説する。 @@ -407,7 +407,7 @@ </li> </ul> <p> - ここで、PHPer トークンは必ず <code>#</code> 記号から始まることを思いだすと、 <code>$token</code> の最初の数字 <code>0x14B499C</code> は、変換の結果 <code>#</code> になるのではないかと予想される (なお、このことは、リポジトリの README ファイルに追加ヒントとして書かれている)。 + ここで、PHPer トークンは必ず <code>#</code> 記号から始まることを思いだすと、<code>$token</code> の最初の数字 <code>0x14B499C</code> は、変換の結果 <code>#</code> になるのではないかと予想される (なお、このことは、リポジトリの README ファイルに追加ヒントとして書かれている)。 </p> </section> <section id="section--q2-riddle--solve"> @@ -521,10 +521,10 @@ <section id="section--q3-toquine--commentary--quine"> <h4><a href="#section--q3-toquine--commentary--quine">プログラム全体</a></h4> <p> - コメントにもあるとおり、これは quine (風) のプログラムになっている。 Quine とは、自分のソースコードをそっくりそのまま出力するようなプログラムのことである。 + コメントにもあるとおり、これは quine (風) のプログラムになっている。Quine とは、自分のソースコードをそっくりそのまま出力するようなプログラムのことである。 </p> <p> - このプログラムは、実行すると自身とほとんど同じプログラムを出力する。 異なるのはトークンになっている部分のみである。 + このプログラムは、実行すると自身とほとんど同じプログラムを出力する。異なるのはトークンになっている部分のみである。 </p> </section> <section id="section--q3-toquine--commentary--tokens"> @@ -536,13 +536,13 @@ <section id="section--q3-toquine--commentary--states"> <h4><a href="#section--q3-toquine--commentary--states">状態保持</a></h4> <p> - トークンの何文字目まで出力したかを、ソースコードを変えずに (quine なので) 覚えておく必要がある。 このプログラムでは、トークンが出力されるとソースコードがだんだんと長くなっていくのを利用して、<code>__LINE__</code> から情報を取得している。 + トークンの何文字目まで出力したかを、ソースコードを変えずに (quine なので) 覚えておく必要がある。このプログラムでは、トークンが出力されるとソースコードがだんだんと長くなっていくのを利用して、<code>__LINE__</code> から情報を取得している。 </p> </section> <section id="section--q3-toquine--commentary--rot-13"> <h4><a href="#section--q3-toquine--commentary--rot-13">ROT 13</a></h4> <p> - Quine は、素朴に書くとプログラムの一部が 2回記述されてしまう。 これがあまり美しくないので、<code>toquine.php</code> では、ROT 13 変換を使って難読化した。 + Quine は、素朴に書くとプログラムの一部が 2回記述されてしまう。これがあまり美しくないので、<code>toquine.php</code> では、ROT 13 変換を使って難読化した。 </p> <p> それにしてもなぜこんなものが標準ライブラリに……。 @@ -556,7 +556,7 @@ 解いていただいたみなさん、また、難易度調整につきあっていただいた社内のみなさん、ありがとうございました。 </p> <p> - 今回は直前に作りはじめたのもあり、3問だけかつ使い古されたネタばかりになってしまいましたが、 来年は 5問、より面白い問題を持っていきます。 + 今回は直前に作りはじめたのもあり、3問だけかつ使い古されたネタばかりになってしまいましたが、来年は 5問、より面白い問題を持っていきます。 </p> <p> 実はもう作りはじめているので、どうか来年もありますように……。 |
