Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save lilkraftwerk/8013433 to your computer and use it in GitHub Desktop.
Save lilkraftwerk/8013433 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1 boggle class challenge
class BoggleBoard
def initialize(dice_grid)
@dice_grid = dice_grid
end
def create_word(*coords)
coords.map { |coord| @dice_grid[coord.first][coord.last]}.join("")
end
def get_row(row)
@dice_grid[row]
end
def get_col(col)
@dice_grid.map { |row| row[col] }
end
def get_diag(c1, c2) #get_diag([0, 3], [3, 0])
if (c1[0] - c2[0]).abs != (c1[1] - c2[1]).abs
raise(ArgumentError, "That's not diagonal")
end
if c1[1] > c2[1]
flipped = true
c1, c2 = c2, c1
end
c1[0] < c2[0] ? row_offset = 1 : row_offset = -1
final_array = []
c3 = c1
final_array << @dice_grid[c1[0]][c1[1]]
while c3 != c2
c3 = [c3[0] + row_offset, c3[1] + 1]
final_array << @dice_grid[c3[0]][c3[1]]
end
flipped ? final_array.reverse : final_array
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:
p boggle_board.create_word([0,1], [1,1], [0,2], [1,2]) #=> returns "road"
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"]
p boggle_board.get_col(1) #=> ["r", "o", "c", "a"]
p boggle_board.get_col(0) #=> ["b", "i", "e", "t"]
p boggle_board.get_col(2) #=> ["a", "d", "l", "k"]
p boggle_board.get_diag([0,0], [3,3]) == ["b", "o", "l", "e"]
p boggle_board.get_diag([3,0], [0,3]) == ["t", "c", "d", "e"]
p boggle_board.get_diag([3,3], [0,0]) == ["b", "o", "l", "e"].reverse
p boggle_board.get_diag([0,3], [3,0]) == ["e", "d", "c", "t"]
p boggle_board.get_diag([0,0], [1,1]) == ["b", "o"]
p boggle_board.get_diag([1,2], [2,1]) == ["d", "c"]
# create driver test code to retrieve a value at a coordinate here:
#get a particular coordinate
p boggle_board.get_row(3)[2] == "k"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment