class Present attr_reader :l, :w, :h def initialize(l, w, h) @l = l @w = w @h = h end def self.for(string) new *string.split("x").map(&:to_i) end def paper surface_area + slack end def side_areas [l*w, l*h, w*h] end def surface_area side_areas.sum * 2 end def slack side_areas.min end def perimeters [2*(l+w), 2*(l+h), 2*(w+h)] end def volume l*w*h end def ribbon perimeters.min + volume end end