-
Notifications
You must be signed in to change notification settings - Fork 0
Documentation
rah00l edited this page May 7, 2018
·
3 revisions
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. |
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'
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
Fetch the board size
response = HTTParty.get("http://ipinfo.io/#{@address}")
fail 'Whoops, are you connected to the Internet?' unless response
response
Assign pieces on board.
@pieces = Array.new(pieces_to_assign).map do
piece = assign_unique_pieces
coordinates << piece.coordinates
piece
end
Assigns n/2 pieces of board size.
(@size / 2).floor
Assigns coordinates to a piece.
attacking_pairs.map do |pair|
pair.map(&:coordinates)
end
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
Verifies attacking conditions.
diagonally? || vertically? || horizontally?
Verifies for horizontally attacking queens.
axis?(:y)
Verifies for vertically attacking queens.
axis?(:x)
Verifies for diagonally attacking queens.
difference_on_axis(:x) == difference_on_axis(:y)