問題 #2 - 回答 #100

Base32

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

回答 #100

basi が 2024-03-09 01:07:54 に投稿

コード

490 byte

const T = [
    '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($l=fgets(STDIN)){
    $b='';
    foreach(str_split(rtrim($l))as$c)
        $b.=sprintf('%08b',ord($c));
    $r='';
    foreach(str_split($b,5)as$c)
        $r.=T[bindec(str_pad($c,5,'0'))];
    $r.=str_repeat('=',match(strlen($b)%40){8=>6,16=>4,24=>3,32=>1,default=>0});
    echo $r,'
    ';
}

実行結果

ステータス: 失敗

テストケース 1

ステータス: 不正解

標準出力

NBXWOZI=
    OBUXS3Y=
    MZ2WOYI=
    

標準エラー出力


テストケース 2

ステータス: 不正解

標準出力

4OAYNY4BRPRYFCXDQGX6HAMS
    4OA2VY4BRTRYFCPDQGDOHAMX
    4OBI7Y4BTHRYFCPDQKBOHANB
    

標準エラー出力


テストケース 3

ステータス: 不正解

標準出力

GEZDGNBVGY3Q====
    GEZA====
    GEZDGNBVGY3TQOJQ
    GEZDGNBVGY3TQ===
    GEZDG===
    GEZDGNBV
    GEZDGNBVGY3TQOI=
    GEZDGNA=
    GE======
    GEZDGNBVGY======
    

標準エラー出力


テストケース 4

ステータス: 不正解

標準出力

MEQGEIDD
    EAQOHAMC4OAYIIHDQGDCBY4BRAQOHAMK
    

標準エラー出力