50 lines
1.3 KiB
Markdown
50 lines
1.3 KiB
Markdown
|
# Run-Length Encoding
|
||
|
|
||
|
Welcome to Run-Length Encoding on Exercism's Elixir Track.
|
||
|
If you need help running the tests or submitting your code, check out `HELP.md`.
|
||
|
|
||
|
## Instructions
|
||
|
|
||
|
Implement run-length encoding and decoding.
|
||
|
|
||
|
Run-length encoding (RLE) is a simple form of data compression, where runs (consecutive data elements) are replaced by just one data value and count.
|
||
|
|
||
|
For example we can represent the original 53 characters with only 13.
|
||
|
|
||
|
```text
|
||
|
"WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB" -> "12WB12W3B24WB"
|
||
|
```
|
||
|
|
||
|
RLE allows the original data to be perfectly reconstructed from the compressed data, which makes it a lossless data compression.
|
||
|
|
||
|
```text
|
||
|
"AABCCCDEEEE" -> "2AB3CD4E" -> "AABCCCDEEEE"
|
||
|
```
|
||
|
|
||
|
For simplicity, you can assume that the unencoded string will only contain the letters A through Z (either lower or upper case) and whitespace.
|
||
|
This way data to be encoded will never contain any numbers and numbers inside data to be decoded always represent the count for the following character.
|
||
|
|
||
|
## Source
|
||
|
|
||
|
### Created by
|
||
|
|
||
|
- @Teapane
|
||
|
|
||
|
### Contributed to by
|
||
|
|
||
|
- @angelikatyborska
|
||
|
- @CoderDennis
|
||
|
- @Cohen-Carlisle
|
||
|
- @dalexj
|
||
|
- @daveyarwood
|
||
|
- @devonestes
|
||
|
- @lex57ukr
|
||
|
- @lpil
|
||
|
- @neenjaw
|
||
|
- @parkerl
|
||
|
- @sotojuan
|
||
|
- @waiting-for-dev
|
||
|
|
||
|
### Based on
|
||
|
|
||
|
Wikipedia - https://en.wikipedia.org/wiki/Run-length_encoding
|