require 'matrix' module Gecode::Util #:nodoc: # Methods that make a matrix an enumerable. module MatrixEnumMethods #:nodoc: include Enumerable # Iterates over every element in the matrix. def each(&block) row_size.times do |i| column_size.times do |j| yield self[i,j] end end end end # Extends Matrix so that it's an enumerable. class EnumMatrix < Matrix #:nodoc: include MatrixEnumMethods def row(i) wrap_if_wrapped make_vector_enumerable(super) end def column(i) wrap_if_wrapped make_vector_enumerable(super) end def minor(*args) matrix = super class <