Die Herausforderung
Schreiben Sie ein Programm, das eine einzeilige Zeichenfolge mit beliebigen druckbaren ASCII-Zeichen eingeben und dieselbe in Base85 codierte Zeichenfolge ausgeben kann (unter Verwendung einer Big-Endian-Konvention). Sie können davon ausgehen, dass die Eingabe immer ≤ 100 Zeichen ist.
Eine Anleitung zu Base85
Vier Oktette sind in (normalerweise) fünf Base85-Zeichen codiert.
Base85-Zeichen reichen von
!
bisu
(ASCII 33 - 117) undz
(ASCII 122).Zum Codieren führen Sie kontinuierlich eine Division durch 85 für die vier Oktette (eine 32-Bit-Zahl) durch und addieren 33 zum Rest (nach jeder Division), um das ASCII-Zeichen für den codierten Wert zu erhalten. Beispielsweise erzeugt die erste Anwendung dieses Prozesses das Zeichen ganz rechts im codierten Block.
Wenn ein Satz von vier Oktetten nur Null-Bytes enthält, werden sie als
z
statt codiert!!!!!
.Wenn der letzte Block kürzer als vier Oktette ist, wird er mit Null-Bytes aufgefüllt. Nach dem Codieren wird die gleiche Anzahl von Zeichen, die als Auffüllung hinzugefügt wurden, am Ende der Ausgabe entfernt.
Dem codierten Wert sollte vorangestellt
<~
und gefolgt werden~>
.Der codierte Wert sollte kein Leerzeichen enthalten (für diese Herausforderung).
Beispiele
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~>
Das folgende Snippet codiert eine bestimmte Eingabe in Base85.