####Challenge
Forked from dbc-challenges/0.2.1-boggle_class_from_methods.rb
Last active
January 1, 2016 08:49
-
-
Save tonyta/8120958 to your computer and use it in GitHub Desktop.
DBC Phase 0 Week 4 - Creating a BoggleBoard Class
This file contains 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
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