問題 #2 - 回答 #159
Base32
RFC 4648 で定義された Base32 エンコーディングを実装してください。 標準入力から与えられる各行に対し、Base32 エンコードをおこなった文字列を標準出力へ改行区切りで出力してください。 なお、アルファベットの出力には大文字を用いてください。
回答 #159
zonepotage が 2024-03-09 16:57:29 に投稿
コード
808 byte
while ($plaintext = fgets(STDIN)) {
$text = '';
$bit = 0;
$value = 0;
$i = 0;
while(($bit >= 5) || ($i < strlen($plaintext))){
if($i < strlen($plaintext)){
$value = ($value * 256) + ord($plaintext[$i]);
$bit+= 8;
$i++;
}
$bit -= 5;
$code = (int)($value / pow(2,$bit));
$text .= chr($code + 65 - ($code > 25 ? 41 : 0));
$value %= (pow(2, $bit));
if(($bit < 5) && ($bit > 0) && ($i >= strlen($plaintext))){
$value *= pow(2,5 - $bit);
$bit = 5;
}
}
if(strlen($text) % 8){
$text .= str_repeat("=",8 - strlen($text) % 8);
}
echo $text, PHP_EOL;
}
実行結果
ステータス: 失敗
テストケース 1
ステータス: 不正解
標準出力
NBXWOZIK
OBUXS3YK
MZ2WOYIK
標準エラー出力
テストケース 2
ステータス: 実行時エラー
標準出力
Deprecated: Implicit conversion from float 2346943114 to int loses precision in php.wasm code on line 21
Deprecated: Implicit conversion from float -17657853213 to int loses precision in php.wasm code on line 21
Deprecated: Implicit conversion from float -122363911295 to int loses precision in php.wasm code on line 21
Deprecated: Implicit conversion from float 8589934592 to int loses precision in php.wasm code on line 21
Fatal error: Uncaught DivisionByZeroError: Modulo by zero in php.wasm code:21
Stack trace:
#0 {main}
thrown in php.wasm code on line 21
標準エラー出力
テストケース 3
ステータス: 実行時エラー
標準出力
GEZDGNBVGY3QU===
GEZAU===
Deprecated: Implicit conversion from float 26696235312 to int loses precision in php.wasm code on line 21
Deprecated: Implicit conversion from float 237166473226 to int loses precision in php.wasm code on line 21
Deprecated: Implicit conversion from float 8589934592 to int loses precision in php.wasm code on line 21
Fatal error: Uncaught DivisionByZeroError: Modulo by zero in php.wasm code:21
Stack trace:
#0 {main}
thrown in php.wasm code on line 21
標準エラー出力
テストケース 4
ステータス: 実行時エラー
標準出力
MEQGEIDDBI======
Deprecated: Implicit conversion from float 3816916000 to int loses precision in php.wasm code on line 21
Deprecated: Implicit conversion from float -19301916445 to int loses precision in php.wasm code on line 21
Deprecated: Implicit conversion from float -268366191743 to int loses precision in php.wasm code on line 21
Deprecated: Implicit conversion from float 8589934592 to int loses precision in php.wasm code on line 21
Fatal error: Uncaught DivisionByZeroError: Modulo by zero in php.wasm code:21
Stack trace:
#0 {main}
thrown in php.wasm code on line 21
標準エラー出力