1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>問題 #2 - 回答 #140 | Albatross.PHP</title>
<link rel="stylesheet" href="../../../../assets/index.css">
<link rel="icon" type="image/svg+xml" href="../../../../assets/favicon.svg">
<script type="module" src="../../../../assets/index.js"></script>
</head>
<body>
<header class="container">
<nav class="navbar">
<a class="navbar-brand" href="../../../../index.html">Albatross.PHP</a>
</nav>
</header>
<main class="container mt-5">
<h1 class="mb-4">問題 #2 - 回答 #140</h1>
<nav>
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="../../../../index.html">問題一覧</a></li>
<li class="breadcrumb-item"><a href="../../index.html">Base32</a></li>
<li class="breadcrumb-item"><a href="../index.html">回答一覧</a></li>
<li class="breadcrumb-item active">#140</li>
</ol>
</nav>
<h2>Base32</h2>
<p>
RFC 4648 で定義された Base32 エンコーディングを実装してください。
標準入力から与えられる各行に対し、Base32 エンコードをおこなった文字列を標準出力へ改行区切りで出力してください。
なお、アルファベットの出力には大文字を用いてください。
</p>
<h2>回答 #140</h2>
<p>
masnmt が 2024-03-09 04:52:12 に投稿
</p>
<h2>コード</h2>
<p>
677 byte
</p>
<pre><code class="hljs language-php">const TABLE = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
'Y', 'Z', '2', '3', '4', '5', '6', '7',
];
while ($line = fgets(STDIN)) {
$line = rtrim($line);
$bits = '';
for ($i = 0; $i < strlen($line); $i++) {
$bits .= str_pad(base_convert(strval(ord($line[$i])), 10, 2), 8, '0', STR_PAD_LEFT);
}
$base32 = '';
foreach (str_split($bits, 5) as $b) {
$base32 .= TABLE[base_convert(str_pad($b, 5, '0'), 2, 10)];
}
$base32 .= match (strlen($bits) % 40) {
8 => '======',
16 => '====',
24 => '===',
32 => '=',
default => '',
};
echo $base32, PHP_EOL;
}</code></pre>
<h2>実行結果</h2>
<div class="js-phper-token">
</div>
<div class="mt-3">
ステータス: <span class="js-aggregated-execution-status" data-answer-id="424">OK</span>
</div>
<div class="mt-3">
<h3>テストケース 1</h3>
<div>
ステータス: <span class="js-testcase-execution-status" data-testcase-execution-id="993">OK</span>
</div>
<h4>標準出力</h4>
<pre><code class="js-testcase-execution-stdout hljs language-plaintext" data-testcase-execution-id="993">NBXWOZI=
OBUXS3Y=
MZ2WOYI=
</code></pre>
<h4>標準エラー出力</h4>
<pre><code class="js-testcase-execution-stderr hljs language-plaintext" data-testcase-execution-id="993">
</code></pre>
<h3>テストケース 2</h3>
<div>
ステータス: <span class="js-testcase-execution-status" data-testcase-execution-id="994">OK</span>
</div>
<h4>標準出力</h4>
<pre><code class="js-testcase-execution-stdout hljs language-plaintext" data-testcase-execution-id="994">4OAYNY4BRPRYFCXDQGX6HAMS
4OA2VY4BRTRYFCPDQGDOHAMX
4OBI7Y4BTHRYFCPDQKBOHANB
</code></pre>
<h4>標準エラー出力</h4>
<pre><code class="js-testcase-execution-stderr hljs language-plaintext" data-testcase-execution-id="994">
</code></pre>
<h3>テストケース 3</h3>
<div>
ステータス: <span class="js-testcase-execution-status" data-testcase-execution-id="995">OK</span>
</div>
<h4>標準出力</h4>
<pre><code class="js-testcase-execution-stdout hljs language-plaintext" data-testcase-execution-id="995">GEZDGNBVGY3Q====
GEZA====
GEZDGNBVGY3TQOJQ
GEZDGNBVGY3TQ===
GEZDG===
GEZDGNBV
GEZDGNBVGY3TQOI=
GEZDGNA=
GE======
GEZDGNBVGY======
</code></pre>
<h4>標準エラー出力</h4>
<pre><code class="js-testcase-execution-stderr hljs language-plaintext" data-testcase-execution-id="995">
</code></pre>
<h3>テストケース 4</h3>
<div>
ステータス: <span class="js-testcase-execution-status" data-testcase-execution-id="996">OK</span>
</div>
<h4>標準出力</h4>
<pre><code class="js-testcase-execution-stdout hljs language-plaintext" data-testcase-execution-id="996">MEQGEIDD
EAQOHAMC4OAYIIHDQGDCBY4BRAQOHAMK
</code></pre>
<h4>標準エラー出力</h4>
<pre><code class="js-testcase-execution-stderr hljs language-plaintext" data-testcase-execution-id="996">
</code></pre>
</div>
<script type="module" src="../../../../assets/loading.js"></script>
</main>
<footer class="container text-center mt-5 mb-4">
Albatross.PHP - PHPerKaigi 2024
</footer>
</body>
</html>
|