Forked from dbc-challenges/0.2.1-boggle_class_from_methods.rb
Last active
December 31, 2015 09:28
-
-
Save LightningLord/7966615 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1
boggle 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
#initial | |
class BoggleBoard | |
def initialize(board) | |
@board = board | |
end | |
def create_word(*coords) | |
coords.map { |coord| @board[coord.first][coord.last]}.join("") | |
end | |
def get_row(row) | |
@board[row] | |
end | |
def get_col(col) | |
@board.collect {|row| row[col]} | |
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) | |
#step 2 | |
puts boggle_board.create_word([1,2], [1,1], [2,1], [3,2]) #=> dock | |
puts boggle_board.get_row(3) #=> ["t", "a", "k", "e"] | |
puts boggle_board.get_col(0) #=> ["b", "i", "e", "t"] | |
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 | |
#expected output => | |
# brae | |
# iodt | |
# eclr | |
# take | |
# biet | |
# roca | |
# adlk | |
# etre | |
#step 3 | |
puts boggle_board.create_word([3,2]) #=> k | |
#refactored, including get_diagonal | |
class BoggleBoard | |
def initialize(board) | |
@board = board | |
end | |
def create_word(*coords) | |
coords.map { |coord| @board[coord.first][coord.last]}.join | |
end | |
def get_row(row) | |
@board[row] | |
end | |
def get_col(col) | |
@board.collect {|row| row[col]} | |
end | |
def get_diagonal(coord1, coord2) | |
if (coord1.first - coord2.first).abs != (coord1.last - coord2.last).abs | |
raise ArgumentError.new("These coordinates do not form a diagonal") | |
else | |
result = [] | |
diagonal_length = (coord1.first - coord2.first).abs + 1 | |
row = coord1.first | |
col = coord1.last | |
diagonal_length.times { result.push(@board[row][col]) | |
row += (coord2.first - coord1.first) / (coord1.first - coord2.first) | |
col += (coord2.last - coord1.last) / (coord1.first - coord2.first) | |
} | |
end | |
result | |
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) | |
#step 2 | |
puts boggle_board.create_word([1,2], [1,1], [2,1], [3,2]) #=> dock | |
puts boggle_board.get_row(3) #=> ["t", "a", "k", "e"] | |
puts boggle_board.get_col(0) #=> ["b", "i", "e", "t"] | |
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 | |
#expected output => | |
# brae | |
# iodt | |
# eclr | |
# take | |
# biet | |
# roca | |
# adlk | |
# etre | |
#step 3 | |
puts boggle_board.create_word([3,2]) #=> k | |
#step 4 | |
puts boggle_board.get_diagonal([3,0],[0,3]).join #=> tcde | |
puts boggle_board.get_diagonal([0,0], [3,3]).join #=> bole | |
puts boggle_board.get_diagonal([0,3], [3,0]).join #=> edct | |
puts boggle_board.get_diagonal([0,2], [2,0]).join #=> aoe | |
puts boggle_board.get_diagonal([1,0],[0,1]).join #=> ir | |
puts boggle_board.get_diagonal([0,0], [0,2]) #=> argument error | |
#Reflection | |
#In OOP, you have to define a class and an initialize method. you also must initialize an instance of the class | |
#before you can call any class methods. | |
#OOP allows you to store the board array as an instance variable, which means you don't have to | |
#pass in the board as an argument every time. OOP allows you store class definitions easily and inherit from them |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment