16 lines
481 B
Plaintext
16 lines
481 B
Plaintext
using system;
|
|
|
|
encode s = strcat $ map (sprintf "%d%s") $ encode $ chars s with
|
|
encode [] = [];
|
|
encode xs@(x:_) = (#takewhile (==x) xs,x) : encode (dropwhile (==x) xs);
|
|
end;
|
|
|
|
decode s = strcat [c | n,c = parse s; i = 1..n] with
|
|
parse s::string = regexg item "([0-9]+)(.)" REG_EXTENDED s 0;
|
|
item info = val (reg 1 info!1), reg 2 info!1;
|
|
end;
|
|
|
|
let s = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW";
|
|
let r = encode s; // "12W1B12W3B24W1B14W"
|
|
decode r;
|