問題 #2 - 回答 #152

Base32

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

回答 #152

ticknical が 2024-03-09 14:39:27 に投稿

コード

327 byte

const TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
while($line=fgets(STDIN)){$line=rtrim($line);$bits='';for($i=0;$i<strlen($line);$i++){$bits.=str_pad(base_convert(ord($line[$i]),10,2),8,0,0);}echo chunk_split(strtr($bits,'01',TABLE),8,''),match(strlen($bits)%40){8=>'======',16=>'====',24=>'===',32=>'=',default=>''},PHP_EOL;}

実行結果

ステータス: 失敗

テストケース 1

ステータス: 不正解

標準出力

ABBABAAAABBABBBBABBAABBBABBAABAB=
ABBBAAAAABBABAABABBBBAABABBABBBB=
ABBAABBAABBBABABABBAABBBABBAAAAB=

標準エラー出力


テストケース 2

ステータス: 不正解

標準出力

BBBAAABBBAAAAAABBAAAABBABBBAAABBBAAAAAABBAAABABBBBBAAABBBAAAAABABAAABABABBBAAABBBAAAAAABBABABBBBBBBAAABBBAAAAAABBAABAABA
BBBAAABBBAAAAAABBABABABABBBAAABBBAAAAAABBAAABBAABBBAAABBBAAAAABABAAABAABBBBAAABBBAAAAAABBAAAABBABBBAAABBBAAAAAABBAABABBB
BBBAAABBBAAAAABABAAABBBBBBBAAABBBAAAAAABBAABBAABBBBAAABBBAAAAABABAAABAABBBBAAABBBAAAAABABAAAAABABBBAAABBBAAAAAABBABAAAAB

標準エラー出力


テストケース 3

ステータス: 不正解

標準出力

AABBAAABAABBAABAAABBAABBAABBABAAAABBABABAABBABBAAABBABBB====
AABBAAABAABBAABA====
AABBAAABAABBAABAAABBAABBAABBABAAAABBABABAABBABBAAABBABBBAABBBAAAAABBBAABAABBAAAA
AABBAAABAABBAABAAABBAABBAABBABAAAABBABABAABBABBAAABBABBBAABBBAAA===
AABBAAABAABBAABAAABBAABB===
AABBAAABAABBAABAAABBAABBAABBABAAAABBABAB
AABBAAABAABBAABAAABBAABBAABBABAAAABBABABAABBABBAAABBABBBAABBBAAAAABBBAAB=
AABBAAABAABBAABAAABBAABBAABBABAA=
AABBAAAB======
AABBAAABAABBAABAAABBAABBAABBABAAAABBABABAABBABBA======

標準エラー出力


テストケース 4

ステータス: 不正解

標準出力

ABBAAAABAABAAAAAABBAAABAAABAAAAAABBAAABB
AABAAAAAAABAAAAABBBAAABBBAAAAAABBAAAAABABBBAAABBBAAAAAABBAAAABAAAABAAAAABBBAAABBBAAAAAABBAAAABBAAABAAAAABBBAAABBBAAAAAABBAAABAAAAABAAAAABBBAAABBBAAAAAABBAAABABA

標準エラー出力