# frozen_string_literal: true require "stringio" def look_and_say(input) counter = 1 output = input.each_char.map(&:to_i).chain([nil]).each_cons(2).reduce(StringIO.new) do |acc, (val1, val2)| if val1 == val2 counter += 1 else acc.write counter acc.write val1 counter = 1 end acc end output.rewind output end