#!/usr/bin/ruby

# http://rosettacode.org/wiki/Run-length_encoding

func encode (str) {

    var input = str.chars;
    var encoding = [];

    var count = 1;
    var prev = input[0];

    for (var i = 1; i <= (input.end); i++) {

        if (input[i] != prev) {
            encoding.push([count, prev]);
            count = 1;
            prev = input[i];
        }
        else {
            count++;
        }
    }

    encoding.push([count, prev]);
    return(encoding);
}

func decode (encoded) {

    var output = '';

    for i in (encoded) {
        output += (i[1] * i[0])
    }

    return(output);
}


var str = 'WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW' -> say;

var encoded = (encode(str))     -> dump -> say;
var decoded = (decode(encoded)) -> say;

str == decoded || ("Failed!\n".die);