Соревнование
Напишите программу, которая может принимать ввод однострочной строки, содержащей любые печатные символы 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.