Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save wiltonmaddams/7715264 to your computer and use it in GitHub Desktop.
Save wiltonmaddams/7715264 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1 boggle class challenge
class BoggleBoard
def initialize(board) #(board = [])
@board = board
end
def create_word(*coords)
coords.map {|coord| @board[coord.first][coord.last]}.join("")
end
def get_row(row)
@board[row].join("")
end
def get_col(col)
@board.transpose[col]
end
def get_char(coord)
@board[coord.first][coord.last]
end
def get_diagonal(coord1, coord2)
unless (coord1[1] - coord2[1]).abs == (coord1[0] - coord2[0]).abs && coord1[1] - coord2[1] != 0
puts "This will not produce a diagonal!"
else
diagonal = []
until coord1[1] == coord2[1] && coord1[0] == coord2[0]
diagonal << @board[coord1[0]][coord1[1]]
if coord1[0] < coord2[0]
coord1[0] += 1
if coord1[1] < coord2[1]
coord1[1] +=1
else
coord1[1] -= 1
end
else
coord1[0] -= 1
if coord1[1] < coord2[1]
coord1[1] += 1
else
coord1[1] -= 1
end
end
end
diagonal << @board[coord2[0]][coord2[1]]
end
print diagonal
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)
puts boggle_board.create_word([1,2], [1,1], [2,1], [3,2]) #==> should return dock
puts "--"
puts boggle_board.create_word([2,1], [1,1], [1,2], [0,3]) #==> should return code
puts "--"
puts boggle_board.create_word([0,1], [0,2], [1,2]) #==> should return rad
puts "--"
puts boggle_board.create_word([0,0], [0,1], [1,0], [2,1], [3,2]) #==> should return brick
puts "--"
puts boggle_board.create_word([0,1], [1,1], [2,1], [3,2], [3,1], [0,1], [1,1], [2,2], [2,2]) #==> should return rockaroll
puts "--"
puts boggle_board.get_row(0) #==> should return ["b", "r", "a", "e"]
puts "--"
puts boggle_board.get_row(1) #==> should return ["i", "o", "d", "t"]
puts "--"
puts boggle_board.get_row(2) #==> should return ["e", "c", "l", "r"]
puts "--"
puts boggle_board.get_row(3) #==> should return ["t", "a", "k", "e"]
puts "--"
puts boggle_board.get_col(0) #==> should return ["b", "i", "e", "t"]
puts "--"
puts boggle_board.get_col(1) #==> should return ["r", "o", "c", "a"]
puts "--"
puts boggle_board.get_col(2) #==> should return ["a", "d", "l", "k"]
puts "--"
puts boggle_board.get_col(3) #==> should return ["e", "t", "r", "e"]
puts "--"
puts boggle_board.get_char([0,1]) #==> should return "r"
puts "--"
puts boggle_board.get_char([1,3]) #==> should return "t"
puts "--"
puts boggle_board.get_char([2,2]) #==> should return "l"
puts "--"
puts boggle_board.get_char([3,3]) #==> should return "e"
puts "--"
puts boggle_board.create_word([3,2]) #==> should return "k"
puts "--"
puts boggle_board.create_word([2,1]) #==> should return "c"
puts "--"
puts boggle_board.get_diagonal([0,0],[1,1]) #==> should return ["b", "o"]
puts "--"
puts boggle_board.get_diagonal([3,3], [2,2]) #==> should return ["e", "l"]
puts "--"
puts boggle_board.get_diagonal([0,1],[0,2]) #==> should return "This will not produce a diagonal!"
puts "--"
puts boggle_board.get_diagonal([0,3],[3,0]) #==> should return ["e", "d", "c", "t"]
puts "--"
puts boggle_board.get_diagonal([0,0],[3,3]) #==> should return ["b", "o", "l", "e"]
#Reflection
# The benefit to creating a class first an instantiating objects means each object has access to an unlimited number of methods,
# and each method can refer to the same variable and manipulate it. It allows a programmer/user to very quickly perform a number of tasks
# on any instance of a class and seamlessly call multiple methods to change its properties. I was grateful to have learned the benefits of using
# the .transpose method for switching nested arrays so that I could return the columns, and additionally .map would have been a great method to use
# to find the column. I also created a get_char method that takes a coordinate and returns the value at that element, however, it can also be done
# using the create word method and only passing a single coordinate as an argument.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment