12345678910111213141516171819202122232425 |
- #!/usr/bin/ruby
- # https://rosettacode.org/wiki/Run-length_encoding
- func encode(str) {
- str.gsub(/(.)(\1{0,254})/, {|a,b| b.len+1 -> chr + a})
- }
- func decode(str) {
- var chars = str.chars
- var r = ''
- (chars.len/2 -> int).range.each { |i|
- r += (chars[2*i + 1] * chars[2*i].ord)
- }
- return r
- }
- var str = "WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW"
- var e = encode(str)
- say str
- say e.dump
- var d = decode(e)
- say d
|