Run-length encoding

You are encouraged to solve this task according to the task description, using any language you may know.


Task

Given a string containing uppercase characters (A-Z), compress repeated 'runs' of the same character by storing the length of that run, and provide a function to reverse the compression.

The output can be anything, as long as you can recreate the input with it.



Example

 Input: WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW
 Output: 12W1B12W3B24W1B14W


Note: the encoding step in the above example is the same as a step of the Look-and-say sequence.




  [ lookandsay ]          is encode ( $ --> $ )
 
  [ $ "" 0 rot
    witheach 
      [ dup 
        char 0 char 9 1+
        within iff
          [ char 0 -
            swap 10 * + ]
        else
          [ swap of join 
            0 ] ]
    drop ]                is decode ( $ --> $ )
 
  $ "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW" 
   dup echo$ cr
   encode
   dup echo$ cr
   decode
   echo$ cr