Le défi
Écrivez un programme qui peut prendre une entrée d'une chaîne d'une seule ligne contenant tous les caractères imprimables ASCII et produire la même chaîne codée en Base85 (en utilisant une convention big-endian). Vous pouvez supposer que l'entrée sera toujours ≤ 100 caractères.
Un guide de Base85
Quatre octets sont codés en (généralement) cinq caractères Base85.
Les caractères Base85 vont de
!
àu
(ASCII 33 - 117) etz
(ASCII 122).Pour encoder, vous effectuez en continu la division par 85 sur les quatre octets (un nombre de 32 bits) et ajoutez 33 au reste (après chaque division) pour obtenir le caractère ASCII pour la valeur encodée. Par exemple, la première application de ce processus produit le caractère le plus à droite dans le bloc codé.
Si un ensemble de quatre octets ne contient que des octets nuls, ils sont codés en tant que
z
au lieu de!!!!!
.Si le dernier bloc est plus court que quatre octets, il est complété par des octets nuls. Après l'encodage, le même nombre de caractères ajoutés en tant que remplissage est supprimé à la fin de la sortie.
La valeur codée doit être précédée
<~
et suivie de~>
.La valeur codée ne doit contenir aucun espace (pour ce défi).
Exemples
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~>
L'extrait suivant codera une entrée donnée pour Base85.