robust-compress
Version:
Compress a robust sequence
34 lines (32 loc) • 525 B
JavaScript
"use strict"
module.exports = compressExpansion
function compressExpansion(e) {
var m = e.length
var Q = e[e.length-1]
var bottom = m
for(var i=m-2; i>=0; --i) {
var a = Q
var b = e[i]
Q = a + b
var bv = Q - a
var q = b - bv
if(q) {
e[--bottom] = Q
Q = q
}
}
var top = 0
for(var i=bottom; i<m; ++i) {
var a = e[i]
var b = Q
Q = a + b
var bv = Q - a
var q = b - bv
if(q) {
e[top++] = q
}
}
e[top++] = Q
e.length = top
return e
}