class RunLengthEncoding
Public Class Methods
decode(input)
click to toggle source
# File lib/run_length_encoding.rb, line 13 def self.decode(input) out = [] groups = input.scan(/\d+|[A-Za-z\s]/) (0..groups.length).each do |i| if groups[i].to_i != 0 out.push groups[i + 1] * (groups[i].to_i-1) else out.push groups[i] end end out.join('') end
encode(input)
click to toggle source
# File lib/run_length_encoding.rb, line 2 def self.encode(input) groups = [] encode_string = [] input.scan(/((.)\2*)/) { |x| groups.push(x[0]) } groups.each do |x| encode_string.push x.chars.length if x.chars.length >= 2 encode_string.push x.chars[0] end encode_string.join('') end