Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save 4justinstewart/9280750 to your computer and use it in GitHub Desktop.
Save 4justinstewart/9280750 to your computer and use it in GitHub Desktop.
phase 0 unit 2 week 1 boggle class challenge
class BoggleBoard
attr_reader :board
def initialize(board_name = create_board)
@board = board_name
end
def create_word(*coords)
coords.map { |coord| board[coord.first][coord.last] }.join
end
def get_row(row_number)
board[row_number]
end
def get_column(column_number)
column = []
board.each do |row|
row.each do
column << row[column_number]
break
end
end
column
end
def get_diagonal(start_coord, end_coord)
row_difference = (start_coord.first - end_coord.first)
column_difference = (start_coord.last - end_coord.last)
raise ArgumentError.new "No diagonal is possible." unless row_difference.abs == column_difference.abs
if row_difference.abs > 1
if row_difference > 0
rows = (0..row_difference).to_a.reverse
else
rows = (0..row_difference.abs).to_a
end
if column_difference > 0
columns = (0..column_difference).to_a.reverse
else
columns = (0..column_difference.abs).to_a
end
diagonal_coords = rows.zip(columns)
else
diagonal_coords = [] << start_coord << end_coord
end
diagonal = []
diagonal_coords.each { |x| diagonal << create_word(x) }
diagonal.join
end
def create_board
letter_frequencies = {
'e' => 10,
'a' => 8,
'i' => 7,
'o' => 6,
'l' => 5,
'n' => 5,
's' => 5,
't' => 5,
'd' => 4,
'r' => 4,
'u' => 4,
'b' => 3,
'c' => 3,
'g' => 3,
'h' => 3,
'm' => 3,
'p' => 3,
'y' => 3,
'f' => 2,
'k' => 2,
'v' => 2,
'w' => 2,
'j' => 1,
'q' => 1,
'x' => 1,
'z' => 1
}
boggle_dice = Array.new(16){[]}
boggle_board = []
boggle_dice.each do |die|
while die.length < 6 do
random_letter = letter_frequencies.keys.sample
letter_frequencies[random_letter] <=0 ? next : die << random_letter
letter_frequencies[random_letter] -= 1
end
roll = die.sample
boggle_board << roll
end
puts "This is your Boggle Board:"
p boggle_board[0..3]
p boggle_board[4..7]
p boggle_board[8..11]
p boggle_board[12..15]
end
end
# DRIVER CODE TESTING
# -------------------------------------
dice_grid = [["b", "r", "a", "e"],
["i", "o", "d", "t"],
["e", "c", "l", "r"],
["t", "a", "k", "e"]]
boggle_board = BoggleBoard.new(dice_grid)
p boggle_board.get_column(2)
p boggle_board.get_row(1)
p boggle_board.create_word([3,0], [3,1], [3,2], [3,3]) == 'take'
p boggle_board.get_diagonal([2,0], [0,2]) == "eoa"
p boggle_board.get_diagonal([0,2], [2,0]) == "aoe"
p boggle_board.get_diagonal([3,0], [0,3]) == "tcde"
boggle_board = BoggleBoard.new
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment