Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Here is my code, its a boggle game, you enter a word and it validates if the wor

ID: 3539344 • Letter: H

Question


Here is my code, its a boggle game, you enter a word and it validates if the word is a on the board, can someone show me how to make the validation use recursion?


import java.util.*;


public class boggleBoard
{
    static String[][] Board=new String[4][4];
    static int[][] Visit= new int[4][4];
   
    public static void fillArray(int seed){
       
        Random rand = new Random(seed);
        for(int i=0;i<4;i++)
        {
            System.out.println("+-----+ +-----+ +-----+ +-----+");
            for(int j=0;j<4;j++)
            {
                char randomAlphabets=(char)(rand.nextInt(26) + 'A');
                Board[i][j]=Character.toString(randomAlphabets);
                Visit[i][j]=-1;
                System.out.print("| "+Board[i][j]+" | ");
            }
            System.out.println();
        }
        System.out.println("+-----+ +-----+ +-----+ +-----+");

    }
    public static void printFilled()
    {
        System.out.println("Nice Job!");
                for(int i=0;i<4;i++)
                {
                    System.out.println("+-----+ +-----+ +-----+ +-----+");
                    for(int j=0;j<4;j++)
                    {
                        if(Visit[i][j]==1)
                        {
                            System.out.print("| <"+Board[i][j]+"> | ");
                        //    Visit[i][j]=-1;
                        }
                        else
                        {
                            System.out.print("| "+Board[i][j]+" | ");
                        }
                    }
                    System.out.println();
                }
                System.out.println("+-----+ +-----+ +-----+ +-----+");
               
    }
   
    public static void startGame()

    {
        int seed;
        Scanner in = new Scanner(System.in);
        System.out.println("Enter seed");
        seed =in.nextInt();
      
        fillArray(seed);
       
        while(true)
        {
            System.out.println("Enter the word (in Uppercase):");
            String str=in.next();
           
            if(checkSol(str))
            {
                printFilled();
            }
            else
            {
                System.out.println("I don't see that word.");
               
               
            }
            if(isPalindrome(str))
                {
                    System.out.println("The word "+str+" is a palindrome");
                   }
            else
            {
                System.out.println("The word "+str+" is not a palindrome");
            }
            int choice1=1;
            while((true)&&(choice1==1))
            {
                System.out.println("Do you want to play on same board ?(yes/no)");
                String choice=in.next();
                if(choice.equals("yes"))
                {
                    choice1=2;
                    break;
                }
                if(choice.equals("no"))
                {
                    choice1=3;
                    break;
                }
                else
                {
                      choice1=1;
                }
        }
        if(choice1==3)
        {
            break;
        }
        }
    }
    private static boolean validateWord(String a,int x,int y)
    {
        if(!a.substring(0,1).equals(Board[x][y]))
        {
           return false;
          
        }
        if(a.length()==1)
        {
            Visit[x][y]=1;
            return true;
        }
        else
        {
            Visit[x][y]=1;
            if((x<=2)&&(x>=1)&&(y<=2)&&(y>=1))
            {
                if(a.substring(1, 2).equals(Board[x+1][y]))
                {
                    Visit[x+1][y]=1;
                    return validateWord(a.substring(1, a.length()),x+1,y);
                }
                if(a.substring(1, 2).equals(Board[x-1][y]))
                {
                    return validateWord(a.substring(1, a.length()),x-1,y);
                }
                if(a.substring(1, 2).equals(Board[x][y+1]))
                {
                    return validateWord(a.substring(1, a.length()),x,y+1);
                }
                if(a.substring(1, 2).equals(Board[x][y-1]))
                {
                    return validateWord(a.substring(1, a.length()),x,y-1);
                }
            }
            else if((x<1)&&(y<=2)&&(y>=1))
            {
                if(a.substring(1, 2).equals(Board[x+1][y]))
                {
                    return validateWord(a.substring(1, a.length()),x+1,y);
                }
                if(a.substring(1, 2).equals(Board[x][y+1]))
                {
                    return validateWord(a.substring(1, a.length()),x,y+1);
                }
                if(a.substring(1, 2).equals(Board[x][y-1]))
                {
                    return validateWord(a.substring(1, a.length()),x,y-1);
                }
            }
            else if((x>2)&&(y<=2)&&(y>=1))
            {
                if(a.substring(1, 2).equals(Board[x-1][y]))
                {
                    return validateWord(a.substring(1, a.length()),x-1,y);
                }
                if(a.substring(1, 2).equals(Board[x][y+1]))
                {
                    return validateWord(a.substring(1, a.length()),x,y+1);
                }
                if(a.substring(1, 2).equals(Board[x][y-1]))
                {
                    return validateWord(a.substring(1, a.length()),x,y-1);
                }
            }
            else if((y<1)&&(x<=2)&&(x>=1))
            {
                if(a.substring(1, 2).equals(Board[x-1][y]))
                {
                    return validateWord(a.substring(1, a.length()),x-1,y);
                }
                if(a.substring(1, 2).equals(Board[x][y+1]))
                {
                    return validateWord(a.substring(1, a.length()),x,y+1);
                }
                if(a.substring(1, 2).equals(Board[x+1][y]))
                {
                    return validateWord(a.substring(1, a.length()),x+1,y);
                }
            }
            else if((y>2)&&(x<=2)&&(x>=1))
            {
                if(a.substring(1, 2).equals(Board[x-1][y]))
                {
                    return validateWord(a.substring(1, a.length()),x-1,y);
                }
                if(a.substring(1, 2).equals(Board[x][y-1]))
                {
                    return validateWord(a.substring(1, a.length()),x,y-1);
                }
                if(a.substring(1, 2).equals(Board[x+1][y]))
                {
                    return validateWord(a.substring(1, a.length()),x+1,y);
                }
            }
            else if((x==0)&&(y==0))
            {
                if(a.substring(1, 2).equals(Board[0][1]))
                {
                    return validateWord(a.substring(1, a.length()),0,1);
                }
                if(a.substring(1, 2).equals(Board[1][0]))
                {
                    return validateWord(a.substring(1, a.length()),1,0);
                }
            }
            else if((x==3)&&(y==0))
            {
                if(a.substring(1, 2).equals(Board[2][0]))
                {
                    return validateWord(a.substring(1, a.length()),2,0);
                }
                if(a.substring(1, 2).equals(Board[3][1]))
                {
                    return validateWord(a.substring(1, a.length()),3,1);
                }
            }
            else if((x==0)&&(y==3))
            {
                if(a.substring(1, 2).equals(Board[0][2]))
                {
                    return validateWord(a.substring(1, a.length()),0,2);
                }
                if(a.substring(1, 2).equals(Board[1][3]))
                {
                    return validateWord(a.substring(1, a.length()),1,3);
                }
            }
            else if((x==3)&&(y==3))
            {
                    if(a.substring(1, 2).equals(Board[2][3]))
                    {
                        return validateWord(a.substring(1, a.length()),2,3);
                    }
                    if(a.substring(1, 2).equals(Board[3][2]))
                    {
                        return validateWord(a.substring(1, a.length()),3,2);
                    }
            }
            return false;
        }
    }
    public static boolean checkSol(String str){
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<4;j++)
            {
                if(validateWord(str,i,j))
                {
                    return true;
                }
            }
        }
        return false;
    }
    public static boolean isPalindrome(String str)
    {
        if(str.length()==1)
        {
            return true;
        }
        else if(str.length()==2)
        {
            if(str.substring(0, 1).equals(str.substring(1, 2)))
            {
                return true;
            }
            return false;
        }
        else
        {
            if(str.substring(0, 1).equals(str.substring(str.length()-1, str.length())))
            {
                return isPalindrome(str.substring(1, str.length()-1));
            }
            return false;
        }
    }
   
}

Explanation / Answer

A yet smaller implementation:



import java.util.*;


public class boggleBoard
{
    static String[][] Board=new String[4][4];
    static int[][] Visit= new int[4][4];
   
    public static void main(String[] args){
        boggleBoard.startGame();
    }
  
    public static void fillArray(int seed){
      
        Random rand = new Random(seed);
        for(int i=0;i<4;i++)
        {
            System.out.println("+-----+ +-----+ +-----+ +-----+");
            for(int j=0;j<4;j++)
            {
                char randomAlphabets=(char)(rand.nextInt(26) + 'A');
                Board[i][j]=Character.toString(randomAlphabets);
                Visit[i][j]=-1;
                System.out.print("| "+Board[i][j]+" | ");
            }
            System.out.println();
        }
        System.out.println("+-----+ +-----+ +-----+ +-----+");

    }
    public static void printFilled()
    {
        System.out.println("Nice Job!");
                for(int i=0;i<4;i++)
                {
                    System.out.println("+-----+ +-----+ +-----+ +-----+");
                    for(int j=0;j<4;j++)
                    {
                        if(Visit[i][j]==1)
                        {
                            System.out.print("| <"+Board[i][j]+"> | ");
                        //    Visit[i][j]=-1;
                        }
                        else
                        {
                            System.out.print("| "+Board[i][j]+" | ");
                        }
                    }
                    System.out.println();
                }
                System.out.println("+-----+ +-----+ +-----+ +-----+");
              
    }
  
    public static void startGame()

    {
        int seed;
        Scanner in = new Scanner(System.in);
        System.out.println("Enter seed");
        seed =in.nextInt();
     
        fillArray(seed);
      
        while(true)
        {
            System.out.println("Enter the word (in Uppercase):");
            String str=in.next();
          
            if(checkSol(str))
            {
                printFilled();
            }
            else
            {
                System.out.println("I don't see that word.");
              
              
            }
            if(isPalindrome(str))
                {
                    System.out.println("The word "+str+" is a palindrome");
                   }
            else
            {
                System.out.println("The word "+str+" is not a palindrome");
            }
            int choice1=1;
            while((true)&&(choice1==1))
            {
                System.out.println("Do you want to play on same board ?(yes/no)");
                String choice=in.next();
                if(choice.equals("yes"))
                {
                    choice1=2;
                    break;
                }
                if(choice.equals("no"))
                {
                    choice1=3;
                    break;
                }
                else
                {
                      choice1=1;
                }
        }
        if(choice1==3)
        {
            break;
        }
        }
    }
   
    private static boolean checkValid(int i, int j){
        if(i>=0 && i<=3)
            if(j>=0 && j<=3)
                return true;
        return false;
    }
   
    private static boolean setVal(int i, int j){
        Visit[i][j] = 1;
        return true;
    }
   
    private static boolean validateWord(String a, int x, int y){
        boolean answer = false;
        if(a.length()==1)
            if(a.substring(0).equals(Board[x][y]))
                return setVal(x, y);
            else
                return false;
        else if(a.substring(0,1).equals(Board[x][y])){
           
            int p = x-1;
            int q = y-1;
           
            for(int i=0; i<3; i++)
                for(int j=0; j<3; j++){
                    if(i==1 && j==1)
                        continue;
                    if(checkValid(p+i, q+j)){
                        answer = validateString(a.substring(1), p+i, q+j);
                        if(answer == true)
                            return setVal(p+1, q+1);
                    }
                }
        }
        return false;
    }

    public static boolean checkSol(String str){
        for(int i=0;i<4;i++)
        {
            for(int j=0;j<4;j++)
            {
                if(validateWord(str,i,j))
                {
                    return true;
                }
            }
        }
        return false;
    }
    public static boolean isPalindrome(String str)
    {
        if(str.length()==1)
        {
            return true;
        }
        else if(str.length()==2)
        {
            if(str.substring(0, 1).equals(str.substring(1, 2)))
            {
                return true;
            }
            return false;
        }
        else
        {
            if(str.substring(0, 1).equals(str.substring(str.length()-1, str.length())))
            {
                return isPalindrome(str.substring(1, str.length()-1));
            }
            return false;
        }
    }
  
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote