Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save shaunmcgeever/8774742 to your computer and use it in GitHub Desktop.
Save shaunmcgeever/8774742 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1boggle class challenge
class BoggleBoard
def initialize(board)
@board=board
end
def coord
@board
end
def create_word(*coords) #Because I've initialized the board, I don't need it as an parameter
coords.map { |coord| @board[coord.first][coord.last]}.join("")
end
def get_row(row)
#@board[row].join("")
@board[row]
end
def get_column(col)
#(@board.map {|rows| rows[col]}).join("")
@board.map {|rows| rows[col]}
end
def get_diagonal(first_coord, last_coord)
diagonal = []
if (first_coord == [0,0] || first_coord == [1,1] || first_coord == [2,2] || first_coord ==[3,3]) && (last_coord == [0,0] || last_coord == [1,1] || last_coord == [2,2] || last_coord == [3,3])
col = 0
@board.map do |row|
diagonal<< row[col]
col += 1
end
if first_coord.first<last_coord.last
return diagonal
else
return diagonal.reverse
end
elsif (first_coord == [3,0] || first_coord == [2,1] || first_coord == [1,2] || first_coord == [0,3]) && (last_coord == [3,0] || last_coord == [2,1] || last_coord[1,2] || last_coord[0,3])
col = 3
@board.map do |row|
diagonal << row[col]
col -= 1
end
if first_coord.first<last_coord.first
return diagonal
else
return diagonal.reverse
end
else
puts "The two inputs do not make a valid diagonal."
end
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]) #=> returns "dock"
puts boggle_board.get_row(3) #=> returns "take"
puts boggle_board.get_column(2) #=> returns "adlk"
# All 8 four letter word outputs, shown below
## This code below was used using the #join function within the method.
## This may not be desired, because the output of the method is no longer an array
puts boggle_board.get_row(0) #=> returns "brae"
puts boggle_board.get_row(1) #=> returns "iodt"
puts boggle_board.get_row(2) #=> returns "eclr"
puts boggle_board.get_row(3) #=> returns "take" (real word!)
puts boggle_board.get_column(0) #=> returns "biet"
puts boggle_board.get_column(1) #=> returns "roca"
puts boggle_board.get_column(2) #=> returns "adlk"
puts boggle_board.get_column(3) #=> returns "etre"
###This code below was used using the #join function in the driver code.
### This may be desired, because the output of the method is still an array
puts boggle_board.get_row(0).join("") #=> returns "brae"
puts boggle_board.get_row(1).join("") #=> returns "iodt"
puts boggle_board.get_row(2).join("") #=> returns "eclr"
puts boggle_board.get_row(3).join("") #=> returns "take" (real word!)
puts boggle_board.get_column(0).join("") #=> returns "biet"
puts boggle_board.get_column(1).join("") #=> returns "roca"
puts boggle_board.get_column(2).join("") #=> returns "adlk"
puts boggle_board.get_column(3).join("") #=> returns "etre"
# create driver test code to retrieve a value at a coordinate here:
puts boggle_board.coord[3][2] #=> returns "k"
# driver code for BONUS get_diagonal
puts boggle_board.get_diagonal([1,1],[2,2]).join("") #=> returns "bole"
puts boggle_board.get_diagonal([2,2],[1,1]).join("") #=> returns "elob"
puts boggle_board.get_diagonal([0,3],[2,1]).join("") #=> returns "edct"
puts boggle_board.get_diagonal([3,0],[1,2]).join("") #=> returns "tcde"
puts boggle_board.get_diagonal([1,3],[1,2]).join("") #=> returns "The two inputs do not make a valid diagonal."
## REFLECTION
=begin
Object-oriented programming is definitely different than procedural programming. It is almost
as if the code is even moreso "behind the scenes". From the outside, the way the program works
may not be completely obvious. Objected oriented programming really takes some visualization
and thought inorder to put together the processes needed. However, once it is understood by the
programmer, it is realitively easy to modify and add to it.
=end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment