Sha256: 6a6c9c461f4d7777cd52aef85234dd99c0bceb24871c8d74c9e3e0303c1cfb44

Contents?: true

Size: 923 Bytes

Versions: 12

Compression:

Stored size: 923 Bytes

Contents

class Queens
  attr_reader :white, :black
  def initialize(positions = {})
    @white = positions.fetch(:white) { [0, 3] }
    @black = positions.fetch(:black) { [7, 3] }
    fail ArgumentError if white == black
  end

  def attack?
    on_horizontal? || on_vertical? || on_diagonal?
  end

  def to_s
    board = []
    (0..7).each do |row|
      positions = []
      (0..7).each do |column|
        positions << draw(row, column)
      end
      board[row] = positions.join(' ')
    end
    board.join("\n")
  end

  private

  def on_horizontal?
    white[0] == black[0]
  end

  def on_vertical?
    white[1] == black[1]
  end

  def on_diagonal?
    white_diff.abs == black_diff.abs
  end

  def black_diff
    black[1] - black[0]
  end

  def white_diff
    white[1] - white[0]
  end

  def draw(row, column)
    case [row, column]
    when white then 'W'
    when black then 'B'
    else
      '_'
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
trackler-2.0.0.1 tracks/ruby/exercises/queen-attack/example.rb
trackler-2.0.0.0 tracks/ruby/exercises/queen-attack/example.rb
trackler-1.0.4.1 tracks/ruby/exercises/queen-attack/example.rb
trackler-1.0.4.0 tracks/ruby/exercises/queen-attack/example.rb
trackler-1.0.3.0 tracks/ruby/exercises/queen-attack/example.rb
trackler-1.0.2.1 tracks/ruby/exercises/queen-attack/example.rb
trackler-1.0.2.0 tracks/ruby/exercises/queen-attack/example.rb
trackler-1.0.1.2 tracks/ruby/exercises/queen-attack/example.rb
trackler-1.0.1.1 tracks/ruby/exercises/queen-attack/example.rb
trackler-1.0.1.0 tracks/ruby/exercises/queen-attack/example.rb
trackler-1.0.0.1 tracks/ruby/exercises/queen-attack/example.rb
trackler-1.0.0 tracks/ruby/exercises/queen-attack/example.rb