Код:
#===============================================================================
# Array
# Класс массива. Элементы массива - произвольные объекты Ruby.
#-----------------------------------------------------------------------------
# Заимствованы решения авторов:
# Ширяев Денис
#===============================================================================
class Array
  #-----------------------------------------------------------------------------
  # Псевдоним метода join
  # Возвращает строку, созданную путем преобразования каждого элемента массива
  # в строку, разделенных строкой separator.
  # Вызов: self.to_s(separator :string)
  #        self.join(separator :string)
  # Возвращает :string
  #-----------------------------------------------------------------------------
  alias to_s :join
  #-----------------------------------------------------------------------------
  # Возвращает случайный элемент массива
  #-----------------------------------------------------------------------------
  def rand
    self[Kernel.rand(size)]
  end
  #-----------------------------------------------------------------------------
  # Возвращает количество элементов массива :integer
  # Если указано условие, будет подсчитано количество совпадений с ним
  # Пример: self.size{ |i| (i % 2).zero? } сосчитает количество четных чисел
  #-----------------------------------------------------------------------------
  def size(&closure)
    closure ? inject(0){ |count, elem| (yield elem) ? count + 1 : count } : length
  end
  #-----------------------------------------------------------------------------
  # Преобразует одномерный массив в прямоугольник
  # Возвращает :rect
  # Примечание: первые четыре ячейки массива должны быть класса integer.
  #-----------------------------------------------------------------------------
  def to_rect
    return Rect.new(self[0], self[1], self[2], self[3])
  end
  #-----------------------------------------------------------------------------
end