Solve a Diagonal Burrows-Wheeler transform
CJam, (4 + 8 = ) 12 bytes

Encoding program:

q2/z


Try it online here

Decoding program:

q_,2/)/z


Try it online here

How (or rather, why) they work:

The Diagonal Burrows-Wheeler transform is basically every other character of the string, with wrapping from the end. If we treat the String as a 2D matrix of 2 columns, it simply boils down to taking the transform of the matrix. Example:

Hello World


Is represented as 2D matrix as

He
ll
o 
Wo
rl
d


Now, simply reading it column wise, give:

HloWrdel ol


Which is the Burrows-Wheeler transform.

Decoding is simply reverse of the process, write the string as a 2 row 2D matrix and read column wise.

Code expansion:

Encoder:

q          "Read the input";
 2/        "divide it into sub arrays of 2 characters";
   z       "Take transform";


Decoder:

q_,        "Read the input, take copy and get length of copy";
   2/      "Divide the length by 2";
     )/    "Increment and split the input into two rows";
       z   "Take transform";