Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save patrickforrest/8391972 to your computer and use it in GitHub Desktop.
Save patrickforrest/8391972 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1 boggle class challenge
class BoggleBoard
def initialize board
@board = board
end
def create_word *coord
coord.map { |coord| @board[coord.first][coord.last]}.join("")
end
def get_row row_number
@board[row_number]
end
def get_column col_number
@board.map { |row| row[col_number] }
end
def get_diagonal coord1, coord2
@coord1, @coord2 = coord1, coord2
# make sure it's actually diagonal
raise ArgumentError, "This isn't diagonal!" if ( (@coord1.first == @coord2.first) || (@coord1.last == @coord2.last) )
@results_coords = []
if ( @coord1.first > @coord2.first ) && ( @coord1.last < @coord2.last ) # northeast
direction = :upright
@coord_arr = []
@coord_arr << @coord1[0]
@coord_arr << @coord1[1]
@results_coords << @coord_arr
while @coord1 != @coord2
@coord_arr = []
@coord_arr << @coord1[0] - 1
@coord1[0] -= 1
@coord_arr << @coord1[1] + 1
@coord1[1] += 1
@results_coords << @coord_arr
end
elsif ( @coord1.first > @coord2.first ) && ( @coord1.last > @coord2.last )
direction = :upleft
@coord_arr = []
@coord_arr << @coord1[0]
@coord_arr << @coord1[1]
@results_coords << @coord_arr
while @coord1 != @coord2
@coord_arr = []
@coord_arr << @coord1[0] - 1
@coord1[0] -= 1
@coord_arr << @coord1[1] - 1
@coord1[1] -= 1
@results_coords << @coord_arr
end
elsif ( @coord1.first < @coord2.first ) && ( @coord1.last > @coord2.last )
direction = :downleft
@coord_arr = []
@coord_arr << @coord1[0]
@coord_arr << @coord1[1]
@results_coords << @coord_arr
while @coord1 != @coord2
@coord_arr = []
@coord_arr << @coord1[0] + 1
@coord1[0] += 1
@coord_arr << @coord1[1] - 1
@coord1[1] -= 1
@results_coords << @coord_arr
end
elsif ( @coord1.first < @coord2.first ) && ( @coord1.last < @coord2.last )
direction = :downright
@coord_arr = []
@coord_arr << @coord1[0]
@coord_arr << @coord1[1]
@results_coords << @coord_arr
while @coord1 != @coord2
@coord_arr = []
@coord_arr << @coord1[0] + 1
@coord1[0] += 1
@coord_arr << @coord1[1] + 1
@coord1[1] += 1
@results_coords << @coord_arr
end
end
return @results_coords
end
end
dice_grid = [["b", "r", "a", "e"],
["i", "o", "d", "t"],
["e", "c", "l", "r"],
["t", "a", "k", "e"]]
boggle_board = BoggleBoard.new(dice_grid)
# implement tests for each of the methods here:
puts boggle_board.get_row(2) == ["e", "c", "l", "r"] # => true
puts boggle_board.get_row(0) == ["b", "r", "a", "e"] # => true
puts boggle_board.get_column(1) == ["r", "o", "c", "a"] # => true
puts boggle_board.get_column(3) == ["e", "t", "r", "e"] # => true
puts boggle_board.create_word([0,1],[0,2],[1,2]) == 'rad' # => true
puts boggle_board.get_diagonal( [3,0], [0,3] ) == [[3, 0], [2, 1], [1, 2], [0, 3]] # northeast
puts boggle_board.get_diagonal( [0,0], [3,3] ) == [[0, 0], [1, 1], [2, 2], [3, 3]] # southeast
puts boggle_board.get_diagonal( [3,3], [0,0] ) == [[3, 3], [2, 2], [1, 1], [0, 0]] # northwest
puts boggle_board.get_diagonal( [0,3], [3,0] ) == [[0, 3], [1, 2], [2, 1], [3, 0]] # southwest
# create driver test code to retrieve a value at a coordinate here:
puts boggle_board.create_word([0,3]) == 'e' # => true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment