32 lines
550 B
Plaintext
32 lines
550 B
Plaintext
rle(s)={
|
|
if(s=="", return(s));
|
|
my(v=Vec(s),cur=v[1],ct=1,out="");
|
|
v=concat(v,99); \\ sentinel
|
|
for(i=2,#v,
|
|
if(v[i]==cur,
|
|
ct++
|
|
,
|
|
out=Str(out,ct,cur);
|
|
cur=v[i];
|
|
ct=1
|
|
)
|
|
);
|
|
out
|
|
};
|
|
elr(s)={
|
|
if(s=="", return(s));
|
|
my(v=Vec(s),ct=eval(v[1]),out="");
|
|
v=concat(v,99); \\ sentinel
|
|
for(i=2,#v,
|
|
if(v[i]>="0" && v[i]<="9",
|
|
ct=10*ct+eval(v[i])
|
|
,
|
|
for(j=1,ct,out=Str(out,v[i]));
|
|
ct=0
|
|
)
|
|
);
|
|
out
|
|
};
|
|
rle("WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW")
|
|
elr(%)
|