From a84908b7e8a0e2423afd6b836eccf27a420270b4 Mon Sep 17 00:00:00 2001
From: nsfisis
<?php
+ <?php
$π = $argv[1] ?? null;
if ($π === null) {
@@ -110,14 +110,14 @@ $π = trim($π);
ソースを見るとわかるとおり、$argv[1] を参照している。 それを $π なる変数に代入しているので、円周率を渡してみる。
- $ php Q.php 3.14
+ $ php Q.php 3.14
Failed.
失敗してしまった。精度を上げてみる。
- $ php Q.php 3.1415
+ $ php Q.php 3.1415
Failed.
@@ -128,7 +128,7 @@ Failed.
最初にトークンが得られるのは、小数点以下 16 桁目まで入力したときで、こうなる。
- $ php Q.php 3.1415926535897932
+ $ php Q.php 3.1415926535897932
Token: #YO
@@ -142,7 +142,7 @@ Token: #YO
短いので頭から追っていく。
- $π = $argv[1] ?? null;
+ $π = $argv[1] ?? null;
if ($π === null) {
exit('No input.');
}
@@ -155,7 +155,7 @@ $π = trim($π);
入力のバリデーション部分。数値のみ受け付ける。
- $s = implode(array_map(chr(...), str_split($π, 2)));
+ $s = implode(array_map(chr(...), str_split($π, 2)));
$π を 2 文字ごとに区切り (str_split)、 数値を ASCII コードと見做して文字に変換 (chr) して結合 (implode) している。
@@ -165,12 +165,12 @@ $π = trim($π);
例えば、$π が '656667' だったとすると、 65、66、67 に対応した 'A'、'B'、'C' へと変換され、'ABC' になる。
- $π = '656667';
+ $π = '656667';
$s = implode(array_map(chr(...), str_split($π, 2)));
echo $s;
// => ABC
- preg_match('/(\x23.+?) /', $s, $m);
+ preg_match('/(\x23.+?) /', $s, $m);
$t = $m[1] ?? '';
@@ -181,7 +181,7 @@ $π = trim($π);
なお、# を直接書いていないのは、/#.+?) / と書くと、 #.+?) という意図せぬトークンが登録されてしまうからである。
- if (md5($t) === '056e831a4146bf123e8ea16613303d2e') {
+ if (md5($t) === '056e831a4146bf123e8ea16613303d2e') {
echo "Token: {$t}\n";
} else {
echo "Failed.\n";
--
cgit v1.2.3-70-g09d2