From de13d68cddef5bb321469bcffb868f27ddd5390e Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 12 Mar 2023 15:12:10 +0900 Subject: style: add .highlight class to pre tag --- .../2022-04-09/phperkaigi-2022-tokens/index.html | 30 +++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'public/posts/2022-04-09') diff --git a/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html b/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html index aee9c7c..d16739b 100644 --- a/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html +++ b/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html @@ -66,7 +66,7 @@ ソースコードはこちら。実行には PHP 8.1 以上が必要なので注意。

-
+            
               <?php
 
   declare(strict_types=0O1);
@@ -165,7 +165,7 @@
                   なお、brainf*ck プログラムを普通の書き方で書くと、次のようになる。
                 

-
+                
                   + + + + + + + + + +
 [
 > + + +
@@ -271,7 +271,7 @@
                   ソースコードのライセンスを示したこの部分だが、
                 

-
+                
                   https://creativecommons.org/publicdomain/zero/1.0/
                 
@@ -286,7 +286,7 @@ ソースコード中に、ほとんど数値リテラルが書かれていないことにお気づきだろうか。 PHP では、型変換を利用することで任意の整数を作り出すことができる。

-
+                
                   assert(0 === +!![]);
 assert(1 === +![]);
 assert(2 === ![]+![]);
@@ -333,7 +333,7 @@ assert(10 === +(![].+!![]));
               ソースコードはこちら。実行には PHP 8.0 以上が必要なので注意。
             

-
+            
               <?php
 
   /*********************************************************
@@ -384,7 +384,7 @@ assert(10 === +(![].+!![]));
                 まずはソースコードを読んでいく。
               

-
+              
                 $token = [
   // 略
   ];
@@ -394,7 +394,7 @@ assert(10 === +(![].+!![]));
                 数値からなる$tokenがあり、各要素をループしている。
               

-
+              
                   $x = $x ^ N;
               
@@ -402,7 +402,7 @@ assert(10 === +(![].+!![])); まずは排他的論理和 (xor) を取り、

-
+              
                   $x = sprintf('%025b', $x);
               
@@ -410,7 +410,7 @@ assert(10 === +(![].+!![]));
二進数に変換して、

-
+              
                   $x = str_replace(search: ['0', '1'], replace: [' ', '#'], subject: $x);
               
@@ -418,7 +418,7 @@ assert(10 === +(![].+!![])); 0 を空白に、1 を#にし、

-
+              
                   $x = implode("\n", str_split($x, length: 5));
               
@@ -474,7 +474,7 @@ assert(10 === +(![].+!![])); Nは高々

-
+              
                 assert(0 <= N && N <= 0b11111_11111_11111_11111_11111);
               
@@ -482,7 +482,7 @@ assert(10 === +(![].+!![])); なのでブルートフォースしてもよいが、ここではブルートフォースしない方法を紹介する。

-
+              
                 <?php
 
   $x = 0x14B499C;
@@ -505,7 +505,7 @@ assert(10 === +(![].+!![]));
                 この一連の変換に対する逆変換を考えると、次のようになる。
               

-
+              
                 <?php
 
 $x =
@@ -536,7 +536,7 @@ echo "N = $n\n";
               ソースコードはこちら。
             

-
+            
               <?php
 
   // License: https://creativecommons.org/publicdomain/zero/1.0/
@@ -572,7 +572,7 @@ echo "N = $n\n";
               コメントにもあるとおり、次のようにして実行すれば答えがでてくる。
             

-
+            
               $ php toquine.php | php | php | php | ...
             
-- cgit v1.2.3-70-g09d2