Background
Malbolge is truly intriguing language. But programs written in it are also extraordinairly huge (and in some cases, unpostable on PPCG).
Your challenge (shall you accept it) is, to compress and decompress given normalized Malbolge program. Devise your own lossless algorithm. You may compress your data further using an existing algorithm afterwards, but you must cite the algorithm used. You may use dictionaries.
Input
On the input, there will be given (in most cases very long) string, containing only following characters: i</*jpov
. Example data:
iooooooooooooooooooooovoooioooipooooo<ooooooooooivojo<<<<<oio*ioooooooooooooooopiooooooooooooooooooo/jpooooooooooo
Example bigger chunk of data, 86 kilobytes big.
Output
Well, not very much to say about it, output depends on the algorithm.
Rules:
- Input taken by your program, compressed, and then decompressed, shall be identical.
- Submissions are scored by the following formula: \$ \frac{Compressed}{Original} \times 100\% \$, applied to the example 86 kilobytes big chunk.
- If a submission abuses the fact that only one example chunk is provided (eg. by hardcoding it), I reserve right to add more example chunks.
- Standard loopholes are forbidden, I/O rules apply.
Note: 7zip with PPMd algorithm manages to compress the code with 2,95% score.