Skip to content

Documentation

rah00l edited this page May 7, 2018 · 3 revisions

Available Methods

Method Description
#run Returns either an array or string.
#latitude Fetch the board size.
#check Calls HTTParty and returns the response.
#assign_pieces Assign pieces on board.
#pieces_to_assign Assigns n/2 pieces of board size.
#assign_unique_pieces Assigns unique coordinate by calling recursive.
#attacking? Verifies attacking conditions.
#horizontally? Verifies for horizontally attacking queens.
#vertically? Verifies for vertically attacking queens.
#diagonally? Verifies for diagonally attacking queens.

run

Returns either an array or string.

board_size = IpInfo.new(@ip).latitude
board = Board.new(board_size)
board.assign_pieces

result = board.attacking_coordinates
result.any? ? result : 'true'

latitude

Fetch the board size.

geodata = check['loc']
fail 'Are you sure that place exists?' unless geodata
puts "geodata loc -> #{geodata}"
geodata.split(',').first.to_i

check

Fetch the board size

response = HTTParty.get("http://ipinfo.io/#{@address}")
fail 'Whoops, are you connected to the Internet?' unless response
response

assign_pieces

Assign pieces on board.

@pieces = Array.new(pieces_to_assign).map do
  piece = assign_unique_pieces
  coordinates << piece.coordinates
  piece
end

pieces_to_assign

Assigns n/2 pieces of board size.

(@size / 2).floor

attacking_coordinates

Assigns coordinates to a piece.

attacking_pairs.map do |pair|
  pair.map(&:coordinates)
end

assign_unique_pieces

Assigns unique coordinate by calling recursive.

x = random_in_range
y = random_in_range

unless coordinates.include? [x, y]
  piece = Queen.new
  piece.coordinates = [x, y]
  return piece
end
assign_unique_pieces

attacking?

Verifies attacking conditions.

diagonally? || vertically? || horizontally?

horizontally?

Verifies for horizontally attacking queens.

axis?(:y)

vertically?

Verifies for vertically attacking queens.

axis?(:x)

diagonally?

Verifies for diagonally attacking queens.

difference_on_axis(:x) == difference_on_axis(:y)