Skip to content

Commit e6e32a8

Browse files
committed
added encode
1 parent 1431dd0 commit e6e32a8

File tree

6 files changed

+43
-8
lines changed

6 files changed

+43
-8
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ const decoded = decode(encoded);
1111
// [3, 3, 3, 3, 3, 8, 0, 0]
1212
```
1313
## encoding
14-
Coming Soon
14+
```javascript
15+
import encode from 'fast-rle/decode';
16+
17+
const numbers = [3, 3, 3, 3, 3, 8, 0, 0];
18+
const encoded = decode(numbers);
19+
// [5, 3, 1, 8, 2, 0]
20+
```
1521

1622
# support
1723
Post an issue at https://github.com/danieljdufour/fast-rle

encode.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const encode = nums => {
2+
const encoded = [];
3+
let current = nums[0];
4+
let run_length = 1;
5+
for (let i = 1; i < nums.length; i++) {
6+
const num = nums[i];
7+
if (num === current) {
8+
run_length++;
9+
} else {
10+
encoded.push(run_length);
11+
encoded.push(current);
12+
current = num;
13+
run_length = 1;
14+
}
15+
}
16+
encoded.push(run_length);
17+
encoded.push(current);
18+
return encoded;
19+
};
20+
21+
module.exports = encode;

index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
module.exports = {
2-
decode: require('./decode')
2+
decode: require('./decode'),
3+
encode: require('./encode')
34
};

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "fast-rle",
3-
"version": "0.0.0",
3+
"version": "0.0.1",
44
"description": "Fast Run Length Encoder and Decoder",
55
"main": "index.js",
66
"scripts": {

test.js

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
const test = require('ava');
22
const decode = require('./decode');
3+
const encode = require('./encode');
4+
5+
const decoded = [3, 3, 3, 3, 3, 8, 0, 0];
6+
const encoded = [5, 3, 1, 8, 2, 0];
37

48
test('decode', t => {
5-
const encoded = [5, 3, 1, 8, 2, 0];
6-
const decoded = decode(encoded);
7-
const expected = [3, 3, 3, 3, 3, 8, 0, 0];
8-
t.deepEqual(decoded, expected);
9+
const actual = decode(encoded);
10+
t.deepEqual(actual, decoded);
11+
});
12+
13+
test('encoded', t => {
14+
const actual = encode(decoded);
15+
t.deepEqual(actual, encoded);
916
});

0 commit comments

Comments
 (0)