def win(te) case te when "G" then "P" when "C" then "G" when "P" then "C" end end tes = %w[G C P] limits = [tes, gets.split(" ").map(&:to_i)]. transpose.reduce({}){|h, (k,v)| h[k]=v; h} sum = 0 gets.chomp.chars.each do |aite| me = win(aite) case when limits[me] > 0 sum += 3 limits[me] -= 1 when limits[aite] > 0 sum += 1 limits[aite] -= 1 else limits[(tes - [me, aite]).first] -= 1 end end p sum