Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save dbwieland18/8011128 to your computer and use it in GitHub Desktop.
Save dbwieland18/8011128 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1 boggle class challenge
# create a class called BoggleBoard
# integrate previous methods into BoggleBoard class
# make driver code create a new board object. pass original 2D array as an argument (call it 'dice_grid')
# ensure can interact with boggle_board through the class
# print out all the rows and columns as strings (8 four-letter words)
# access an individual coordinate (the 'k' character at row 3 column 2)
# BONUS: create a #get_diagonal method... should return an array of values, will need 2 coordinates entered to define the diagonal... Error checking would be good.
class BoggleBoard
def initialize(dice_grid)
@dice_grid = dice_grid
end
def create_word(*coords)
coords.map { |coord| @dice_grid[coord.first][coord.last]}.join("")
end
def get_row(row)
@dice_grid[row]
end
def get_col(col)
@dice_grid.map { |i| i[col] }
end
def get_diagonal(coord1, coord2)
#[3,0],[0,3]
if (coord1[0] - coord2[0]).abs != (coord1[1] - coord2[1]).abs
raise ArgumentError.new("Coords are not diagonal.")
else
diag = []
row = coord1[0]
column = coord1[1]
if coord1[0] > coord2[0]
until row < coord2[0]
diag << @dice_grid[row][column]
row -= 1
column += 1
end
else
until row > coord2[0]
diag << @dice_grid[row][column]
row += 1
column += 1
end
end
return print diag
end
end
end
dice_grid = [["b", "r", "a", "e"],
["i", "o", "d", "t"],
["e", "c", "l", "r"],
["t", "a", "k", "e"]]
board = BoggleBoard.new(dice_grid)
puts board.create_word([0,0],[0,1],[1,1],[0,2],[1,2]) #=> 'broad'
puts board.create_word([2,1],[3,1],[3,2],[3,3]) #=> 'cake'
p board.get_row(0) #=> ['b', 'r', 'a', 'e']
p board.get_row(1) #=> ['i', 'o', 'd', 't']
p board.get_row(2) #=> ['e', 'c', 'l', 'r']
p board.get_row(3) #=> ['t', 'a', 'k', 'e']
p board.get_col(0) #=> ['b', 'i', 'e', 't']
p board.get_col(1) #=> ['r', 'o', 'c', 'a']
p board.get_col(2) #=> ['a', 'd', 'l', 'k']
p board.get_col(3) #=> ['e', 't', 'r', 'e']
p board.get_row(0).join #=> "brae"
p board.get_row(1).join #=> "iodt"
p board.get_row(2).join #=> "eclr"
p board.get_row(3).join #=> "take"
p board.get_col(0).join #=> "biet"
p board.get_col(1).join #=> "roca"
p board.get_col(2).join #=> "adlk"
p board.get_col(3).join #=> "etre"
p board.create_word([3,2]) #=> 'k'
p board.get_diagonal([3,0],[0,3]) #=> ['t','c','d','e']
p board.get_diagonal([0,0],[3,3]) #=> ['b','o','l','e']
p board.get_diagonal([0,2],[3,0]) #=> "Coords are not diagonal."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment