Соревнование
Напишите программу, которая может принимать ввод однострочной строки, содержащей любые печатные символы ASCII, и выводить ту же строку, закодированную в Base85 (с использованием соглашения с прямым порядком байтов). Вы можете предположить, что ввод всегда будет ≤ 100 символов.
Руководство по Base85
Четыре октета кодируются (обычно) пятью символами Base85.
Base85 символы в диапазоне от
!
доu
(ASCII 33 - 117) иz
(122) ASCII.Для кодирования вы непрерывно выполняете деление на 85 для четырех октетов (32-разрядное число) и добавляете 33 к остатку (после каждого деления), чтобы получить символ ASCII для закодированного значения. Например, первое применение этого процесса производит самый правый символ в кодированном блоке.
Если набор из четырех октетов содержит только нулевые байты, они кодируются
z
вместо!!!!!
.Если последний блок короче четырех октетов, он дополняется нулевыми байтами. После кодирования то же количество символов, которое было добавлено в качестве отступа, удаляется из конца вывода.
Кодированное значение должно предшествовать
<~
и сопровождаться~>
.Кодированное значение не должно содержать пробелов (для этой задачи).
Примеры
In: easy
Out: <~ARTY*~>
In: test
Out: <~FCfN8~>
In: code golf
Out: <~@rGmh+D5V/Ac~>
In: Programming Puzzles
Out: <~:i^JeEa`g%Bl7Q+:j%)1Ch7Y~>
Следующий фрагмент закодирует данный вход в Base85.