class BestSeats::Matrix

Constants

INITIAL_COLUMN_INDEX
INITIAL_ROW
INITIAL_ROW_INDEX

Attributes

columns[R]
rows[R]
seats[R]

Public Class Methods

new(rows, columns, seats) click to toggle source
# File lib/best_seats/matrix.rb, line 9
def initialize(rows, columns, seats)
  @rows = rows
  @columns = columns
  @seats = seats
end

Public Instance Methods

all() click to toggle source
# File lib/best_seats/matrix.rb, line 23
def all
  return @_full if defined?(@_full)

  row_letter = INITIAL_ROW

  @_full = (INITIAL_ROW_INDEX...rows).map.with_index do |row, index|
    row_letter = index.zero? ? INITIAL_ROW : row_letter.next

    (INITIAL_COLUMN_INDEX..columns).map do |column|
      "#{row_letter}#{column}".to_sym
    end
  end
end
available() click to toggle source
# File lib/best_seats/matrix.rb, line 15
def available
  return @_available if defined?(@_available)

  @_available = all.map do |row|
    row.select { |column| seats.keys.include?(column) }
  end.delete_if(&:empty?)
end