Run-length encoding
Description:
Run-length encoding (RLE) is a very simple form of data compression in which runs of data (that is, sequences in which the same data value occurs in many consecutive data elements) are stored as a single data value and count, rather than as the original run. Wikipedia
Task
Your task is to write such a run-length encoding. For a given string, return a list (or array) of pairs (or arrays) [ (i1, s1), (i2, s2), …, (in, sn) ], such that one can reconstruct the original string by replicating the character sx ix times and concatening all those strings. Your run-length encoding should be minimal, ie. for all i the values si and si+1 should differ.
Examples
As the article states, RLE is a very simple form of data compression. It's only suitable for runs of data, as one can see in the following example:
run_length_encoding("hello world!")
//=> [[1,'h'], [1,'e'], [2,'l'], [1,'o'], [1,' '], [1,'w'], [1,'o'], [1,'r'], [1,'l'], [1,'d'], [1,'!']]
It's very effective if the same data value occurs in many consecutive data elements:
run_length_encoding("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbb")
# => [[34,'a'], [3,'b']]
Similar Kata:
Stats:
Created | Nov 20, 2014 |
Published | Nov 20, 2014 |
Warriors Trained | 12949 |
Total Skips | 314 |
Total Code Submissions | 22140 |
Total Times Completed | 9848 |
Haskell Completions | 298 |
JavaScript Completions | 7790 |
CoffeeScript Completions | 36 |
Python Completions | 1582 |
Ruby Completions | 139 |
C Completions | 46 |
COBOL Completions | 7 |
Rust Completions | 59 |
Julia Completions | 9 |
Elixir Completions | 26 |
Total Stars | 115 |
% of votes with a positive feedback rating | 94% of 646 |
Total "Very Satisfied" Votes | 584 |
Total "Somewhat Satisfied" Votes | 50 |
Total "Not Satisfied" Votes | 12 |