問題 #2 - 回答 #91
Base32
RFC 4648 で定義された Base32 エンコーディングを実装してください。 標準入力から与えられる各行に対し、Base32 エンコードをおこなった文字列を標準出力へ改行区切りで出力してください。 なお、アルファベットの出力には大文字を用いてください。
回答 #91
hanhan1978 が 2024-03-08 15:52:44 に投稿
コード
412 byte
<?php
$T = str_split('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567');
while ($l = fgets(STDIN)) {
$l = rtrim($l);
$bi = '';
foreach(mb_str_split($l) as $m){
$bi .= str_pad(base_convert(strval(ord($m)), 10, 2), 8, '0', 0);
}
$b3 = '';
foreach (str_split($bi, 5) as $b) {
$b3 .= $T[base_convert(str_pad($b, 5, '0'), 2, 10)];
}
echo $b3 .= str_repeat('=', [8=>6,16=>4,24=>3,32=>1][strlen($bi)%40]??0), "\n";
}
実行結果
ステータス: 失敗
テストケース 1
ステータス: OK
標準出力
NBXWOZI=
OBUXS3Y=
MZ2WOYI=
標準エラー出力
テストケース 2
ステータス: 不正解
標準出力
4PR6HY7D
4PR6HY7D
4PR6HY7D
標準エラー出力
テストケース 3
ステータス: OK
標準出力
GEZDGNBVGY3Q====
GEZA====
GEZDGNBVGY3TQOJQ
GEZDGNBVGY3TQ===
GEZDG===
GEZDGNBV
GEZDGNBVGY3TQOI=
GEZDGNA=
GE======
GEZDGNBVGY======
標準エラー出力
テストケース 4
ステータス: 不正解
標準出力
MEQGEIDD
EAQOHYZA4MQOGIHD
標準エラー出力