問題 #2 - 回答 #67

Base32

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

回答 #67

ticknical が 2024-03-08 09:57:33 に投稿

コード

351 byte

const TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
while ($l = rtrim(fgets(STDIN))) {
    $b = '';
    foreach (str_split($l) as $c) {
        $b .= str_pad(decbin(ord($c)), 8, '0', STR_PAD_LEFT);
    }
    $b32 = '';
    foreach (str_split($b, 5) as $b) {
        $b32 .= TABLE[bindec(str_pad($b, 5, '0'))];
    }
    echo rtrim($b32, '='), PHP_EOL;
}

実行結果

ステータス: 失敗

テストケース 1

ステータス: 不正解

標準出力

NBXWOZI
OBUXS3Y
MZ2WOYI

標準エラー出力


テストケース 2

ステータス: OK

標準出力

4OAYNY4BRPRYFCXDQGX6HAMS
4OA2VY4BRTRYFCPDQGDOHAMX
4OBI7Y4BTHRYFCPDQKBOHANB

標準エラー出力


テストケース 3

ステータス: 不正解

標準出力

GEZDGNBVGY3Q
GEZA
GEZDGNBVGY3TQOJQ
GEZDGNBVGY3TQ
GEZDG
GEZDGNBV
GEZDGNBVGY3TQOI
GEZDGNA
GE
GEZDGNBVGY

標準エラー出力


テストケース 4

ステータス: OK

標準出力

MEQGEIDD
EAQOHAMC4OAYIIHDQGDCBY4BRAQOHAMK

標準エラー出力