class C4::Model::Board

Attributes

columns[R]
num_columns[R]
num_rows[R]

Public Class Methods

new(num_rows, num_columns) click to toggle source
# File lib/c4/model/board.rb, line 13
def initialize(num_rows, num_columns)
  @num_rows = num_rows
  @num_columns = num_columns
  @columns = Array.new(num_columns).map { |_| Column.new(num_rows) }
end

Public Instance Methods

diagonals() click to toggle source
# File lib/c4/model/board.rb, line 37
def diagonals
  matrix = Matrix.new(columns.map(&:to_a), num_rows, num_columns)
  matrix.diagonals
end
full?() click to toggle source
# File lib/c4/model/board.rb, line 25
def full?
  columns.all?(&:full?)
end
put_stone!(column, mark) click to toggle source
# File lib/c4/model/board.rb, line 19
def put_stone!(column, mark)
  raise InvalidColumnError, 'Column does not exist!' if column.negative? || column >= columns.size

  columns[column].put!(mark)
end
to_a(mode = :column_wise) click to toggle source
# File lib/c4/model/board.rb, line 29
def to_a(mode = :column_wise)
  column_wise = Matrix.new(columns.map(&:to_a), num_rows, num_columns)
  return column_wise.transpose.matrix if mode == :row_wise # Changes the shape
  return column_wise.transpose.reverse.matrix if mode == :print

  column_wise.matrix
end