Forked from dbc-challenges/0.2.1-boggle_class_from_methods.rb
Last active
December 31, 2015 16:08
-
-
Save dbwieland18/8011128 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1
boggle class challenge
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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