問題 #2 - 回答 #73
Base32
RFC 4648 で定義された Base32 エンコーディングを実装してください。 標準入力から与えられる各行に対し、Base32 エンコードをおこなった文字列を標準出力へ改行区切りで出力してください。 なお、アルファベットの出力には大文字を用いてください。
回答 #73
m3m0r7 が 2024-03-08 12:59:59 に投稿
コード
457 byte
<?php
$t='ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
$c='base_convert';
$s='str_pad';
$l="strlen";
while ($line = fgets(STDIN)) {
for ($i = 0,$line = rtrim($line); $i < $l($line); $i++) {
$bits = ($bits??'').str_pad($c(strval(ord($line[$i])), 10, 2), 8, '0', STR_PAD_LEFT);
}
foreach (str_split($bits, 5) as $b) {
echo $t[$c(str_pad($b, 5, '0'), 2, 10)];
}
echo [8=>'======',16=>'====',24=>'===',32=>'='][$l($bits)%40]??'', PHP_EOL;
}
実行結果
ステータス: 失敗
テストケース 1
ステータス: 不正解
標準出力
NBXWOZI=
NBXWOZLQNF4W6===
NBXWOZLQNF4W6ZTVM5QQ====
標準エラー出力
テストケース 2
ステータス: 不正解
標準出力
4OAYNY4BRPRYFCXDQGX6HAMS
4OAYNY4BRPRYFCXDQGX6HAMS4OA2VY4BRTRYFCPDQGDOHAMX
4OAYNY4BRPRYFCXDQGX6HAMS4OA2VY4BRTRYFCPDQGDOHAMX4OBI7Y4BTHRYFCPDQKBOHANB
標準エラー出力
テストケース 3
ステータス: 不正解
標準出力
GEZDGNBVGY3Q====
GEZDGNBVGY3TCMQ=
GEZDGNBVGY3TCMRRGIZTINJWG44DSMA=
GEZDGNBVGY3TCMRRGIZTINJWG44DSMBRGIZTINJWG44A====
GEZDGNBVGY3TCMRRGIZTINJWG44DSMBRGIZTINJWG44DCMRT
GEZDGNBVGY3TCMRRGIZTINJWG44DSMBRGIZTINJWG44DCMRTGEZDGNBV
GEZDGNBVGY3TCMRRGIZTINJWG44DSMBRGIZTINJWG44DCMRTGEZDGNBVGEZDGNBVGY3TQOI=
GEZDGNBVGY3TCMRRGIZTINJWG44DSMBRGIZTINJWG44DCMRTGEZDGNBVGEZDGNBVGY3TQOJRGIZTI===
GEZDGNBVGY3TCMRRGIZTINJWG44DSMBRGIZTINJWG44DCMRTGEZDGNBVGEZDGNBVGY3TQOJRGIZTIMI=
GEZDGNBVGY3TCMRRGIZTINJWG44DSMBRGIZTINJWG44DCMRTGEZDGNBVGEZDGNBVGY3TQOJRGIZTIMJRGIZTINJW
標準エラー出力
テストケース 4
ステータス: 不正解
標準出力
MEQGEIDD
MEQGEIDDEAQOHAMC4OAYIIHDQGDCBY4BRAQOHAMK
標準エラー出力