Array Ruby

module Enumerable
  def cartesian(other)
    res = []
    each { |x| other.each { |y| res << [x, y] } }
    return res
  end
end
p [1,2,3].cartesian(['a',5,6])
# => [[1, "a"], [1, 5], [1, 6],
# =>  [2, "a"], [2, 5], [2, 6],
# =>  [3, "a"], [3, 5], [3, 6]]