Skip to content

Instantly share code, notes, and snippets.

@JavaScript-Packer
Created May 10, 2015 15:35
Show Gist options
  • Save JavaScript-Packer/4c97ba33ef8af76b266f to your computer and use it in GitHub Desktop.
Save JavaScript-Packer/4c97ba33ef8af76b266f to your computer and use it in GitHub Desktop.
Run Length Encode & Decoder JavaScript functions - Live demo on http://www.whak.ca/demo/run-length-encode.htm
// run length encoder/decoder, not useful when sequence has numbers already in it
function encode_rle(r) {
for (var o, i, n = 0, t = r.length, e = ""; t > n; ++n) void 0 !== o ? r[n] === o ? i++ :(e += i + o,
o = r[n], i = 1) :(o = r[n], i = 1);
return e + (i + o);
}
function decode_rle(r) {
var t, n = /^\d+/.exec(r);
return null === n ? "" :(n = n[0], t = r[n.length], Array(+n + 1).join(t) + decode_rle(r.substr((n + t).length)));
}
var X = "www.WHAK.com aaaaaabbbbbbbbbcbbbbbccccccddddddddaaaabbbbbaaaaacccccceeeeeeeeeee";
X = encode_rle(X);
alert(X);
X = decode_rle(X);
alert(X);
@JavaScript-Packer
Copy link
Author

Minified version:

function r(n){var e,t=/^\d+/.exec(n);return null===t?"":(t=t[0],e=n[t.length],Array(+t+1).join(e)+r(n.substr((t+e).length)))}function n(r){for(var n,e,t=0,o=r.length,i="";o>t;++t)void 0!==n?r[t]===n?e++:(i+=e+n,n=r[t],e=1):(n=r[t],e=1);return i+(e+n)}var e="www.WHAK.com aaaaaabbbbbbbbbcbbbbbccccccddddddddaaaabbbbbaaaaacccccceeeeeeeeeee";e=n(e),e=r(e),alert(e)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment