Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save smithjason/9145111 to your computer and use it in GitHub Desktop.
Save smithjason/9145111 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1boggle class challenge
class BoggleBoard
@@BOARD_LOWERBOUND = 0
@@BOARD_UPPERBOUND = 3
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].inspect
end
def get_col(col)
@board.map {|row| row[col] }.inspect
end
def get_coord(coord)
@board[coord.first][coord.last] if valid_coordinate?(coord)
end
def valid_coordinate?(coord)
coord.all? {|value| value >= @@BOARD_LOWERBOUND && value <= @@BOARD_UPPERBOUND }
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]) == "dock" #=> returns "dock"
puts boggle_board.create_word([2,1], [1,1], [1,2], [0,3]) == "code" #=> returns "code"
puts boggle_board.create_word([0,1], [0,2], [1,2]) == "rad" #=> returns "rad"
puts boggle_board.create_word([0,0], [1,0], [1,1]) == "bio" #=> returns "bio"
puts boggle_board.create_word([3,0], [3,1], [2,2], [3,2]) == "talk" #=> returns "talk"
puts boggle_board.get_row(0) == "[\"b\", \"r\", \"a\", \"e\"]" #=> ["b", "r", "a", "e"]
puts boggle_board.get_row(1) == "[\"i\", \"o\", \"d\", \"t\"]" #=> ["i", "o", "d", "t"]
puts boggle_board.get_row(2) == "[\"e\", \"c\", \"l\", \"r\"]" #=> ["e", "c", "l", "r"]
puts boggle_board.get_row(3) == "[\"t\", \"a\", \"k\", \"e\"]" #=> ["t", "a", "k", "e"]
puts boggle_board.get_col(0) == "[\"b\", \"i\", \"e\", \"t\"]" #=> ["b", "i", "e", "t"]
puts boggle_board.get_col(1) == "[\"r\", \"o\", \"c\", \"a\"]" #=> ["r", "o", "c", "a"]
puts boggle_board.get_col(2) == "[\"a\", \"d\", \"l\", \"k\"]" #=> ["a", "d", "l", "k"]
puts boggle_board.get_col(3) == "[\"e\", \"t\", \"r\", \"e\"]" #=> ["e", "t", "r", "e"]
puts boggle_board.get_coord([3,2]) == "k" #=> k
puts boggle_board.get_coord([0,1]) == "r" #=> r
puts boggle_board.get_coord([1,3]) == "t" #=> t
puts boggle_board.get_coord([2,0]) == "e" #=> e
puts boggle_board.valid_coordinate?([3,2]) == true
puts boggle_board.valid_coordinate?([-1, 3]) == false
puts boggle_board.valid_coordinate?([0,4]) == false
puts boggle_board.valid_coordinate?([0,3]) == true
=begin
REFLECTION
I prefer OOP over procedural when doing things that require repetitve calls to a single set of methods. Its advantage over a
procedural implementation is that I don't have to pass the board array object again and again in method calls. I also
can create multiple different boards using OOP and not have to worry about duplicating code.
=end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment