mirror of
https://github.com/correl/elm.git
synced 2024-11-28 19:19:51 +00:00
61 lines
1.6 KiB
Markdown
61 lines
1.6 KiB
Markdown
|
# Run Length Encoding
|
||
|
|
||
|
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.
|
||
|
|
||
|
```
|
||
|
"WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWB" -> "12WB12W3B24WB"
|
||
|
```
|
||
|
|
||
|
RLE allows the original data to be perfectly reconstructed from
|
||
|
the compressed data, which makes it a lossless data compression.
|
||
|
|
||
|
```
|
||
|
"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.
|
||
|
|
||
|
## Elm Installation
|
||
|
|
||
|
Refer to the [Exercism help page](http://exercism.io/languages/elm) for Elm
|
||
|
installation and learning resources.
|
||
|
|
||
|
## Writing the Code
|
||
|
|
||
|
The first time you start an exercise, you'll need to ensure you have the
|
||
|
appropriate dependencies installed.
|
||
|
|
||
|
```bash
|
||
|
$ npm install
|
||
|
```
|
||
|
|
||
|
Execute the tests with:
|
||
|
|
||
|
```bash
|
||
|
$ npm test
|
||
|
```
|
||
|
|
||
|
Automatically run tests again when you save changes:
|
||
|
|
||
|
```bash
|
||
|
$ npm run watch
|
||
|
```
|
||
|
|
||
|
As you work your way through the test suite, be sure to remove the `skip <|`
|
||
|
calls from each test until you get them all passing!
|
||
|
|
||
|
## Source
|
||
|
|
||
|
Wikipedia [https://en.wikipedia.org/wiki/Run-length_encoding](https://en.wikipedia.org/wiki/Run-length_encoding)
|
||
|
|
||
|
## Submitting Incomplete Solutions
|
||
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|