La sfida
Scrivi un programma che può prendere l'input di una stringa a riga singola contenente qualsiasi carattere stampabile ASCII e produrre la stessa stringa codificata in Base85 (usando una convenzione big-endian). Si può presumere che l'input sarà sempre di ≤ 100 caratteri.
Una guida a Base85
Quattro ottetti sono codificati in (di solito) cinque caratteri Base85.
I caratteri Base85 vanno da
!au(ASCII 33 - 117) ez(ASCII 122).Per codificare, esegui continuamente la divisione per 85 sui quattro ottetti (un numero a 32 bit) e aggiungi 33 al resto (dopo ogni divisione) per ottenere il carattere ASCII per il valore codificato. Ad esempio, la prima applicazione di questo processo produce il carattere più a destra nel blocco codificato.
Se un set di quattro ottetti contiene solo byte nulli, vengono codificati come
zanziché!!!!!.Se l'ultimo blocco è più corto di quattro ottetti, è riempito con byte null. Dopo la codifica, lo stesso numero di caratteri aggiunti come riempimento, viene rimosso dalla fine dell'output.
Il valore codificato deve essere preceduto
<~e seguito da~>.Il valore codificato non deve contenere spazi bianchi (per questa sfida).
Esempi
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~>
Il frammento seguente codificherà un determinato input in Base85.