Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save tonyta/8120958 to your computer and use it in GitHub Desktop.
Save tonyta/8120958 to your computer and use it in GitHub Desktop.
DBC Phase 0 Week 4 - Creating a BoggleBoard Class
class BoggleBoard
attr_accessor :board
def initialize(board)
@board = board
end
def create_word(*coords)
coords.map{|coord| board[coord.first][coord.last]}.join("")
end
def display_board
board.each do |row|
row.each {|letter| print " #{letter.upcase}"}
print "\n"
end
end
def get_row(row)
board[row]
end
def get_col(col)
board.map{|row| row[col]}
end
def get_letter(row, col)
board[row][col]
end
def get_diagonal(coord1, coord2)
diagonal = []
if is_diagonal?(coord1, coord2)
diagonal_rows = get_span(coord1.first, coord2.first)
diagonal_cols = get_span(coord1.last , coord2.last )
diagonal_rows.each_index do |index|
diagonal << board[diagonal_rows[index]][diagonal_cols[index]]
end
diagonal
else
"Coordinates are not endpoints of a diagonal."
end
end
private
# coords are diagonal if each axis changes by same magnitude
def is_diagonal?(coord1, coord2)
(coord1.first - coord2.first).abs == (coord1.last - coord2.last).abs
end
# takes two numbers and makes an inclusive array of all integers between them
def get_span(num1, num2)
if num1 < num2
(num1..num2).to_a
else
(num2..num1).to_a.reverse
end
end
end
###############
# DRIVER CODE #
###############
dice_grid = [["b", "r", "a", "e"],
["i", "o", "d", "t"],
["e", "c", "l", "r"],
["t", "a", "k", "e"]]
boggle_board = BoggleBoard.new(dice_grid)
puts boggle_board.create_word([2,1],[1,1],[1,2],[0,3] ) == "code"
puts boggle_board.create_word([0,1],[0,2],[1,2] ) == "rad"
puts boggle_board.create_word([0,0],[0,1],[1,1],[0,2],[1,2] ) == "broad"
puts boggle_board.create_word([3,0],[3,1],[2,1],[3,2],[2,2],[3,3] ) == "tackle"
puts boggle_board.create_word([2,3],[3,3],[2,2],[1,1],[2,1],[3,1],[3,0],[2,0]) == "relocate"
puts boggle_board.create_word([1,2],[1,1],[2,1],[3,2] ) == "dock"
puts boggle_board.get_row(0) == ["b", "r", "a", "e"]
puts boggle_board.get_row(1) == ["i", "o", "d", "t"]
puts boggle_board.get_row(2) == ["e", "c", "l", "r"]
puts boggle_board.get_row(3) == ["t", "a", "k", "e"]
puts boggle_board.get_col(0) == ["b", "i", "e", "t"]
puts boggle_board.get_col(1) == ["r", "o", "c", "a"]
puts boggle_board.get_col(2) == ["a", "d", "l", "k"]
puts boggle_board.get_col(3) == ["e", "t", "r", "e"]
puts boggle_board.get_row(0).join
puts boggle_board.get_row(1).join
puts boggle_board.get_row(2).join
puts boggle_board.get_row(3).join
puts boggle_board.get_col(0).join
puts boggle_board.get_col(1).join
puts boggle_board.get_col(2).join
puts boggle_board.get_col(3).join
puts boggle_board.get_letter(3,2)
puts boggle_board.get_diagonal([0,3],[3,0]) == ["e", "d", "c", "t"]
puts boggle_board.get_diagonal([3,0],[0,3]) == ["t", "c", "d", "e"]
puts boggle_board.get_diagonal([0,0],[3,3]) == ["b", "o", "l", "e"]
puts boggle_board.get_diagonal([1,2],[2,1]) == ["d", "c"]
puts boggle_board.get_diagonal([1,2],[2,3]) == ["d", "r"]
puts boggle_board.get_diagonal([1,2],[3,2]) == "Coordinates are not endpoints of a diagonal."
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment