問題 #2 - 回答 #95

Base32

RFC 4648 で定義された Base32 エンコーディングを実装してください。 標準入力から与えられる各行に対し、Base32 エンコードをおこなった文字列を標準出力へ改行区切りで出力してください。 なお、アルファベットの出力には大文字を用いてください。

回答 #95

xpadev が 2024-03-08 21:41:11 に投稿

コード

340 byte

$a=array_merge(range('A','Z'),range(2,7));
while ($b=base_convert(unpack('H*',rtrim(fgets(STDIN)))[1],16,2)) {
    $c=strlen($b);
    $b=str_split(str_pad($b,$c+(8-$c%8),'0',STR_PAD_LEFT),5);
    $e="";
    foreach ($b as $d) { 
        $e.=$a[bindec(str_pad($d,5,"0"))];
	}
	$f=strlen($e);
	$e=str_pad($e,$f+(8-$f%8),"=");
	echo $e."\n";
}

実行結果

ステータス: 失敗

テストケース 1

ステータス: OK

標準出力

NBXWOZI=
OBUXS3Y=
MZ2WOYI=

標準エラー出力


テストケース 2

ステータス: 不正解

標準出力

AAAAAAAAAAAAAAA=
AAAAAAAAAAAAAAA=
AAAAAAAAAAAAAAA=

標準エラー出力


テストケース 3

ステータス: 不正解

標準出力

GEZDGNBVGY4A====
GEZA====
AAZTINJWHAAAAAA=
GEZDGNBVGY4AA===
GEZDG===
GEZDGNBV========
AAZDGNBVGY4AAAA=
GEZDGNA=
GE======
GEZDGNBVGY======

標準エラー出力


テストケース 4

ステータス: 不正解

標準出力

MEQGEIDD========
AAAAAAAAAAAAAAA=

標準エラー出力