Forked from dbc-challenges/0.2.1-boggle_class_from_methods.rb
Last active
August 29, 2015 13:55
-
-
Save shaunmcgeever/8774742 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1boggle class challenge
This file contains hidden or 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 | |
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