Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jkschub/8364445 to your computer and use it in GitHub Desktop.
Save jkschub/8364445 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1 boggle class challenge
class BoggleBoard
attr_reader :board
def initialize(board)
@board = board
end
def create_word(*coords)
coords.map { |coord| @board[coord.first][coord.last]}.join("")
end
def get_row(row)
@board[row]
end
def get_col(col)
col_array = []
@board.each_index {|row| col_array << @board[row][col]}
col_array
end
def get_diagonal(coord1, coord2)
unless (coord1[0] - coord2[0]).abs == (coord1[1] - coord2[1]).abs
raise ArgumentError.new("Coordinates must be diagonal from each other.")
end
diagonal_array = []
negative_slope = coord1[0] - coord2[0] == coord1[1] - coord2[1]
row, col = coord1[0], coord1[1]
if negative_slope # NEGATIVE SLOPE COMPLETE - DON'T CHANGE!
until row == 0 || col == 0
row -= 1
col -= 1
end
until row == @board.length || col == @board.length
diagonal_array << @board[row][col]
row += 1
col += 1
end
else
until row == @board.length-1 || col == 0
row += 1
col -= 1
end
until row == -1 || col == @board.length
diagonal_array << @board[row][col]
row -= 1
col += 1
end
end
diagonal_array
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.create_word([1,2], [1,1], [2,1], [3,2]) #=> returns "dock"
puts
p boggle_board.get_row(2) #=> ["e", "c", "l", "r"]
p boggle_board.get_col(3) #=> ["e", "t", "r", "e"]
puts
puts boggle_board.get_row(0).join("") #=> returns "brae"
puts boggle_board.get_row(1).join("") #=> returns "iodt"
puts boggle_board.get_row(2).join("") #=> returns "eclr"
puts boggle_board.get_row(3).join("") # => returns "take"
puts
puts boggle_board.get_col(0).join("") #=> returns "biet"
puts boggle_board.get_col(1).join("") #=> returns "roca"
puts boggle_board.get_col(2).join("") #=> returns "adlk"
puts boggle_board.get_col(3).join("") #=> returns "etre"
puts
p boggle_board.get_diagonal([2,2],[1,3]) #=> ["a", "l", "t"]
p boggle_board.get_diagonal([1,1],[2,2]) #=> ["b", "o", "l", "e"]
p boggle_board.get_diagonal([2,1],[3,2]) #=> ["i", "c", "k"]
p boggle_board.get_diagonal([1,2],[0,3]) #=> ["t", "c", "d", "e"]
# create driver test code to retrieve a value at a coordinate here:
puts boggle_board.board[3][2] #=> returns "k"
puts boggle_board.board[0][1] #=> returns "r"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment