Run-length encoding: Difference between revisions

add JavaScript
(added Clojure version)
(add JavaScript)
Line 656:
}
-->
 
=={{header|JavaScript}}==
Here's an encoding method that walks the input string character by character
<lang javascript>function encode(input) {
var encoding = [];
var prev, count, i;
for (count = 1, prev = input[0], i = 1; i < input.length; i++) {
if (input[i] != prev) {
encoding.push([count, prev]);
count = 1;
prev = input[i];
}
else
count ++;
}
encoding.push([count, prev]);
return encoding;
}</lang>
 
Here's an encoding method that uses a regular expression to grab the character runs ({{works with|Mozilla JavaScript|1.6}} for the <code>forEach</code> method)
<lang javascript>function encode_re(input) {
var encoding = [];
input.match(/(.)\1*/g).forEach(function(substr){ encoding.push([substr.length, substr[0]]) });
return encoding;
}</lang>
 
And to decode (see [[Repeating a string#JavaScript|Repeating a string]])
<lang javascript>function decode(encoded) {
var output = "";
encoded.forEach(function(pair){ output += new Array(1+pair[0]).join(pair[1]) })
return output;
}</lang>
 
=={{header|Mathematica}}==
Anonymous user