lzw.rb# # LZW Algorithm # class Dic def initialize @dict = (0...256).map{|k| [nil, k]} @code = {} end def add(w, k) new_code = @code[(w << 8) + k] = @dict.size @dict << [w, k] return new_code end def code(w, k) return k unless w return @code[(w << 8) + k] end def string(code) w, k = @dict[code] return nil unless k return string(w) << k if w return [k] end end def encode(input) output = [] dic = Di