Producto cartesiano de dos arrays en Ruby

Bueno, sigo con el curso de SAAS de Berkeley, y me ha dado por poner otro ejercicio (bueno, realmente es que llevo días sin escribir, estoy sin ideas y como acabo de hacerlo…). En este caso el último del “homework 1”, que ha sido todo un alivio porque me esperaba algo jodidérrimo pero… no, para nada, es una chorrada tan gorda como hacer una clase con un método each que muestre el producto cartesiano de dos arrays:

class CartesianProduct
  include Enumerable
  def initialize(col1, col2)
    @col1 = col1
    @col2 = col2
  end

  def each
    return to_enum unless block_given?
    @col1.each do |x| 
      @col2.each { |y| yield [x, y] }
    end
  end
end

Como ya ves el constructor de la clase recibe dos arrays (col1 y col2) para inicializar el objeto, y por otra parte el método each recorre el primero cruzando cada elemento con todos los elementos del segundo (de ahí que haya un each dentro de otro each).

Fácil, rápido y barato… por decir algo.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s