問題 #2 - 回答 #121

Base32

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

回答 #121

basi が 2024-03-09 02:39:49 に投稿

コード

299 byte

while($l=fgets(STDIN)){
    $b=$p='';
    foreach(str_split(rtrim($l))as$c)
        $b .= sprintf('%08b', ord($c));
    foreach(str_split($b,5)as$z)
        $p.=(join(range('A','Z')).'234567')[bindec($z)];
    $p.=str_repeat('=',match(strlen($b)%40){8=>6,16=>4,24=>3,32=>1,default=>0});echo$p,'
';
}

実行結果

ステータス: 失敗

テストケース 1

ステータス: 不正解

標準出力

NBXWOZB=
OBUXS3D=
MZ2WOYB=

標準エラー出力


テストケース 2

ステータス: OK

標準出力

4OAYNY4BRPRYFCXDQGX6HAMS
4OA2VY4BRTRYFCPDQGDOHAMX
4OBI7Y4BTHRYFCPDQKBOHANB

標準エラー出力


テストケース 3

ステータス: 不正解

標準出力

GEZDGNBVGY3B====
GEZA====
GEZDGNBVGY3TQOJQ
GEZDGNBVGY3TI===
GEZDD===
GEZDGNBV
GEZDGNBVGY3TQOB=
GEZDGNA=
GB======
GEZDGNBVGG======

標準エラー出力


テストケース 4

ステータス: OK

標準出力

MEQGEIDD
EAQOHAMC4OAYIIHDQGDCBY4BRAQOHAMK

標準エラー出力