Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save timproctor/8499906 to your computer and use it in GitHub Desktop.
Save timproctor/8499906 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1 boggle class challenge
class BoggleBoard
attr_reader :boggle_array
def initialize(boggle_array)
@boggle_array = boggle_array
end
def create_word(array, *coords)
coords.map { |coord| @boggle_array[coord.first][coord.last]}.join("")
end
def get_row(row)
@boggle_array[row]
end
def get_row_as_string(row)
@boggle_array[row].join("")
end
def get_col(col)
@boggle_array.transpose[col]
end
def get_col_as_string(col
@boggle_array.transpose[col].join("")
end
def get_diagonal(array, letter)
if array == [0] && letter == [0]
@boggle_array.flatten.values_at(0, 5, 10 ,15).join
elsif array == [3] && letter == [3]
@boggle_array.flatten.values_at(15, 10, 5, 0).join
elsif array == [0] && letter == [3]
@boggle_array.flatten.values_at(3, 6, 9, 12).join
else array == [3] && letter == [0]
@boggle_array.flatten.values_at(12, 9, 6, 3).join
end
end
end
boggle_array = [["b", "r", "a", "e"],
["i", "o", "d", "t"],
["e", "c", "l", "r"],
["t", "a", "k", "e"]]
puts "New object created that holds boggle_array: "
boggle_board = BoggleBoard.new(boggle_array)
p boggle_board => # <BoggleBoard:0x10eff39d0 @boggle_array=[["b", "r", "a", "e"], ["i", "o", "d", "t"], ["e", "c", "l", "r"], ["t", "a", "k", "e"]]>
puts "\n"
puts "Verb for what a ship might do: "
p boggle_board.create_word(boggle_array, [1,2], [1,1], [2,1], [3,2]) => "dock"
puts "\n"
puts "The first row of the boggle_array is: "
p boggle_board.get_row(0) => ["b", "r", "a", "e"]
puts "The second, third, and fourth rows are: "
p boggle_board.get_row(1) => ["i", "o", "d", "t"]
p boggle_board.get_row(2) => ["e", "c", "l", "r"]
p boggle_board.get_row(3) => ["t", "a", "k", "e"]
puts "\n"
puts "The four rows as strings: "
p boggle_board.get_row_as_string(0) => "brae"
p boggle_board.get_row_as_string(1) => "iodt"
p boggle_board.get_row_as_string(2) => "eclr"
p boggle_board.get_row_as_string(3) => "take"
puts "\n"
puts "The four columns are: "
p boggle_board.get_col(0) => ["b", "i", "e", "t"]
p boggle_board.get_col(1) => ["r", "o", "c", "a"]
p boggle_board.get_col(2) => ["a", "d", "l", "k"]
p boggle_board.get_col(3) => ["e", "t", "r", "e"]
puts "\n"
puts "The 4 columns as strings: "
p boggle_board.get_col_as_string(0) => "brae"
p boggle_board.get_col_as_string(1) => "iodt"
p boggle_board.get_col_as_string(2) => "eclr"
p boggle_board.get_col_as_string(3) => "take"
puts "\n"
puts "Accessing the \"k\" from a nested array: "
p boggle_board.boggle_array[3][2] => "k"
puts "\n"
puts "The diagonal starting from the top left is: "
p boggle_board.get_diagonal([0],[0]) => 'bole'
puts "\n"
puts "The diagonal starting from the bottom right is: "
p boggle_board.get_diagonal([3],[3]) => 'elob'
puts "\n"
puts "The diagonal starting from the top right is: "
p boggle_board.get_diagonal([0],[3]) => 'edct'
puts "\n"
puts "The diagonal starting from the bottom left is: "
p boggle_board.get_diagonal([3], [0]) => 'edct'
# I realize that bonus challenge is just a hot mess of D.R.Yness. If anyone has refactoring advice, please
# let me know.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment