CPE 103
    
    Boggle Checker
    Overview 
    Imagine you are part of a team developing a computer-based variation
    of the board game Boggle (Weiss exercise 10.12).  Boggle is a
    word game consisting of NxN grid of six-sided die where each side of
    a die has a different upper case letter on it.  By shaking up
    the grid of die you end of with a random NxN grid of letters
    something like this:
    
    X Q A E
    Z O T S
    I N D L
    Y R U K
    
    Next the players write down all of the words they find in the grid
    subject to the constraint that two adjacent letters in the word must
    be adjacent in the grid (i.e., north, south, east, or west of each
    other).  Each letter in the grid can be used at most once per
    word. The goal is to find the most words that no other player has
    found. A word must have more than one letter.
     
    Your assignment on the team is to develop the word verification
    routine.  When a player guesses word, you have to determine if
    the word they guessed actually exists in the board.
    
    Write a boolean function called checkWord that has a single String
    parameter representing the word to look for in the Boggle
    board.  Return true if the word is found in the board (doesn't
    have to be an actual English word). You may write private helper
    methods if you choose.
    
    Problem Requirements
    Write a program to perform word
      verification for a Boggle game. 
    
    You must follow this Java class
      definition:
    
    
    public class BoggleChecker
    {
    
    /** Set the board for this
      checker.
       * @param board a String containing the letters in a 4x4 or
      5x5 board
       * in row-major order.  
     * @pre board.length() is
      16 or 25.
       * @pre board contains only upper case letters.
     */
    public void setBoard(String
      board)
    
    /** Determine if the given
      word exists in the current Boggle board. 
       * @param word is a player's guess
       * @pre word contains only letters
       * @pre word.length() > 1
       * @pre a board has been set for this checker.
       */
    public boolean
      checkWord(String word)
    
    }
    
    Note: Please design your own solution. While this algorithm is easy
    to find on the Web or in textbooks, please write your own algorithm
    from scratch.  Do not use the internet or other resources for
    any purpose related to games.   
    
     Design constraints
    There must be no redundant code in your solution.
    Unit Testing
    Write a JUnit test class for BoggleChecker that demonstrates at
    least the following test cases.
    
    Given this 4x4 board,
    
    X Q A E
    Z O T S
    I N D L
    Y R U K
      
      checkWord() should be able to find XQAESLKURYIZ, DNOT, NIZOTS, KUDL,
      STONI, SEAT, ONIYR, ZONIY
    but fail to find MY, SEAN,
      SETS, TOO, DOT
    
    Given this 5x5 board,
    
    X Q A D E  
    Z O T I S
    I N D O L
    Y R U N B
      F A E H K
    
    checkWord() should be able to find ZOTIS, SIT, LOIS
      but fail to find DOT, SLOB