var out = 0 var max_out = -1 var max_times = [] ARGF.each { |line| out += (line ~~ /OUT/ ? 1 : -1) if (out > max_out) { max_out = out max_times = [] } if (out == max_out) { max_times << line.split(' ')[3] } } say "Maximum simultaneous license use is #{max_out} at the following times:" max_times.each {|t| say " #{t}" }