Run-length encoding: Difference between revisions
Content added Content deleted
m (fixed language case) |
|||
Line 502: | Line 502: | ||
W12B1W12B3W24B1W14 |
W12B1W12B3W24B1W14 |
||
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW |
WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW |
||
</pre> |
|||
The following version encodes the number of ocurrences as an unicode character. You can change the way it looks by rotating the offset. |
|||
<lang coffeescript>encode = (str, offset = 75) -> |
|||
str.replace /(.)\1*/g, (w) -> |
|||
w[0] + String.fromCharCode(offset+w.length) |
|||
decode = (str, offset = 75) -> |
|||
str.split('').map((w,i) -> |
|||
if not (i%2) then w else new Array(+w.charCodeAt(0)-offset).join(str[i-1]) |
|||
).join('')</lang> |
|||
<pre> |
|||
> encode "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW" |
|||
WWBLWWBNWcBLWY |
|||
> encode "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW", 1200 |
|||
WҼBұWҼBҳWӈBұWҾ |
|||
> encode "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW", 5200 |
|||
WᑜBᑑWᑜBᑓWᑨBᑑWᑞ |
|||
</pre> |
</pre> |
||