# No.4 list = [50, 2, 1, 9] list.sort_by(&:to_s).reverse.join # No.5 [*2..9].reduce(['1']) do |res, v| res.map { |r| ['', ' + ', ' - '].map { |oper| "#{r}#{oper}#{v}" } }.flatten end.select { |v| eval(v) == 100 }