class Tictactoe::Boards::Square

Attributes

side_size[RW]

Public Class Methods

new(side_size) click to toggle source
# File lib/tictactoe/boards/square.rb, line 4
def initialize(side_size)
  self.side_size = side_size
end

Public Instance Methods

lines() click to toggle source
# File lib/tictactoe/boards/square.rb, line 12
def lines
  @lines ||= horizontal_lines + vertical_lines + diagonal_lines
end
locations() click to toggle source
# File lib/tictactoe/boards/square.rb, line 8
def locations
  @locations ||= (0..(side_size * side_size) -1).to_a
end

Private Instance Methods

diagonal_lines() click to toggle source
# File lib/tictactoe/boards/square.rb, line 27
def diagonal_lines
  descending = (0..side_size - 1).map do |column|
    column * (side_size + 1)
  end
  ascending = (1..side_size).map do |column|
    column * (side_size - 1)
  end

  [descending, ascending]
end
horizontal_lines() click to toggle source
# File lib/tictactoe/boards/square.rb, line 19
def horizontal_lines
  locations.each_slice(side_size).to_a
end
vertical_lines() click to toggle source
# File lib/tictactoe/boards/square.rb, line 23
def vertical_lines
  horizontal_lines.transpose
end