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

Objective IN JAVA AND SHOW OUTPUT AS SHOWN IN EXAMPLE: Write a program that take

ID: 3817330 • Letter: O

Question

Objective IN JAVA AND SHOW OUTPUT AS SHOWN IN EXAMPLE:

Write a program that takes a 5x5 array of characters and detects how many words, 2 to 5 letters in length, can be found. From each letter it is possible to reach every other neighboring letter, but each letter at a given location can only be used once. Check each combination of letters against this simple dictionary.

dictionary file:

https://cse.sc.edu/~shephejj/csce146/Homework/WordFindingGame_files/dict.txt

Example:

Example Dialog:

R A H J M

Y U W W K

R X N F M

Q G E E B

E O A P E

Starting 0 0

Found Word: RAY

Found Word: RAW

Found Word: RUN

Found Word: RUNWAY

Found Word: RUNG

Found Word: RUNGE

Found Word: RUNGE

Found Word: RUNE

Found Word: RUNE

Starting 0 1

Found Word: AR

Found Word: AH

Found Word: AWN

Starting 0 2

Found Word: HA

Found Word: HAY

Found Word: HAW

Found Word: HUN

Found Word: HUNG

Found Word: HUNGRY

Starting 0 3

Starting 0 4

Starting 1 0

Found Word: YAH

Found Word: YAW

Found Word: YAWN

Found Word: YUH

Starting 1 1

Found Word: URGE

Found Word: URGE

Found Word: UN

Starting 1 2

Found Word: WA

Found Word: WAR

Found Word: WARY

Found Word: WAH

Found Word: WAY

Found Word: WU

Starting 1 3

Starting 1 4

Starting 2 0

Found Word: RUN

Found Word: RUNWAY

Found Word: RUNG

Found Word: RUNGE

Found Word: RUNGE

Found Word: RUNE

Found Word: RUNE

Starting 2 1

Starting 2 2

Found Word: NU

Found Word: NW

Found Word: NW

Found Word: NE

Found Word: NEE

Found Word: NEAP

Found Word: NE

Found Word: NEE

Found Word: NEAP

Found Word: NEE

Starting 2 3

Found Word: FM

Found Word: FE

Found Word: FEE

Found Word: FE

Found Word: FEE

Found Word: FEB

Found Word: FEE

Starting 2 4

Found Word: ME

Found Word: MEN

Found Word: MENU

Starting 3 0

Starting 3 1

Found Word: GNU

Found Word: GE

Found Word: GENE

Found Word: GEE

Found Word: GE

Found Word: GO

Found Word: GOA

Found Word: GA

Found Word: GAO

Found Word: GAP

Found Word: GAPE

Found Word: GAPE

Found Word: GAPE

Starting 3 2

Found Word: EX

Found Word: EN

Found Word: ENG

Found Word: EGO

Found Word: EPA

Starting 3 3

Found Word: EN

Found Word: ENG

Found Word: EM

Found Word: EPA

Starting 3 4

Found Word: BMW

Found Word: BE

Found Word: BEN

Found Word: BEE

Found Word: BEEN

Found Word: BEEF

Found Word: BEEP

Found Word: BEE

Found Word: BEEP

Found Word: BP

Found Word: BE

Found Word: BEE

Found Word: BEEN

Found Word: BEEF

Found Word: BEEP

Starting 4 0

Found Word: EGO

Starting 4 1

Starting 4 2

Found Word: AGE

Found Word: AGEE

Found Word: AGE

Found Word: AGO

Found Word: APE

Found Word: APEX

Found Word: APE

Found Word: APE

Starting 4 3

Found Word: PEN

Found Word: PENURY

Found Word: PENURY

Found Word: PEG

Found Word: PEE

Found Word: PEA

Found Word: PEN

Found Word: PENURY

Found Word: PENURY

Found Word: PEE

Found Word: PEA

Found Word: PEE

Found Word: PA

Found Word: PAGE

Found Word: PAGE

Found Word: PEE

Starting 4 4

Found Word: EBEN

Found Word: EPA

Explanation / Answer

import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.Scanner;

public class SampleProgram {

    static HashSet<String> hs;
    static boolean visited[][];
    static char maze[][];
  
    static void printWords(int i, int j, String gen){
//        System.out.println("Gen "+gen);
        if(gen.length()>6){
            return;
        }
        visited[i][j] = true;
        if(gen.length()>=2&&hs.contains(gen.toLowerCase())){
            System.out.println("FOUND WORD : "+gen);
        }
        if(j-1>=1&&!visited[i][j-1]){
            printWords(i,j-1,gen+maze[i][j-1]);
        }
        if(i-1>=1&&j-1>=1&&!visited[i-1][j-1]){
            printWords(i-1,j-1,gen+maze[i-1][j-1]);
        }
        if(i-1>=1&&!visited[i-1][j]){
            printWords(i-1,j,gen+maze[i-1][j]);
        }
        if(i-1>=1&&j+1<=5&&!visited[i-1][j+1]){
            printWords(i-1,j+1,gen+maze[i-1][j+1]);
        }
        if(j+1<=5&&!visited[i][j+1]){
            printWords(i,j+1,gen+maze[i][j+1]);
        }
        if(i+1<=5&&j+1<=5&&!visited[i+1][j+1]){
            printWords(i+1,j+1,gen+maze[i+1][j+1]);
        }
        if(i+1<=5&&!visited[i+1][j]){
            printWords(i+1,j,gen+maze[i+1][j]);
        }
        if(i+1<=5&&j-1>=1&&!visited[i+1][j-1]){
            printWords(i+1,j-1,gen+maze[i+1][j-1]);
        }
      
        visited[i][j] = false;
    }
    public static void main(String[] args) throws IOException {
        //Loading all the keywords to the set
        hs = new HashSet();
        Scanner obj = new Scanner(new File("D:/dict.txt"));
        String str;
        while (obj.hasNext()) {
            hs.add(obj.next().toLowerCase());
        }
        obj = new Scanner(System.in);
        maze = new char[6][6];
        for(int i=1;i<=5;i++){
            for(int j=1;j<=5;j++){
                maze[i][j] = obj.next().charAt(0);
            }
        }
//        visited = new boolean[6][6];
//        printWords(1,2,maze[1][2]+"");
        for(int i=1;i<=5;i++){
            for(int j=1;j<=5;j++){
                System.out.println("Starting "+i+" "+j);
                visited = new boolean[6][6];
                printWords(i,j,maze[i][j]+"");
            }
        }
    }
}

OUTPUT :

R A H J M
Y U W W K
R X N F M
Q G E E B
E O A P E
Starting 1 1
FOUND WORD : RAW
FOUND WORD : RAY
FOUND WORD : RUN
FOUND WORD : RUNWAY
FOUND WORD : RUNE
FOUND WORD : RUNE
FOUND WORD : RUNG
FOUND WORD : RUNGE
FOUND WORD : RUNGE
Starting 1 2
FOUND WORD : AR
FOUND WORD : AH
FOUND WORD : AWN
Starting 1 3
FOUND WORD : HA
FOUND WORD : HAW
FOUND WORD : HAY
FOUND WORD : HUN
FOUND WORD : HUNG
FOUND WORD : HUNGRY
Starting 1 4
Starting 1 5
Starting 2 1
FOUND WORD : YAH
FOUND WORD : YAW
FOUND WORD : YAWN
FOUND WORD : YUH
Starting 2 2
FOUND WORD : UN
FOUND WORD : URGE
FOUND WORD : URGE
Starting 2 3
FOUND WORD : WU
FOUND WORD : WA
FOUND WORD : WAR
FOUND WORD : WARY
FOUND WORD : WAH
FOUND WORD : WAY
Starting 2 4
Starting 2 5
Starting 3 1
FOUND WORD : RUN
FOUND WORD : RUNWAY
FOUND WORD : RUNE
FOUND WORD : RUNE
FOUND WORD : RUNG
FOUND WORD : RUNGE
FOUND WORD : RUNGE
Starting 3 2
Starting 3 3
FOUND WORD : NU
FOUND WORD : NW
FOUND WORD : NW
FOUND WORD : NE
FOUND WORD : NEE
FOUND WORD : NEE
FOUND WORD : NEAP
FOUND WORD : NE
FOUND WORD : NEE
FOUND WORD : NEAP
Starting 3 4
FOUND WORD : FM
FOUND WORD : FE
FOUND WORD : FEE
FOUND WORD : FEB
FOUND WORD : FEE
FOUND WORD : FE
FOUND WORD : FEE
Starting 3 5
FOUND WORD : ME
FOUND WORD : MEN
FOUND WORD : MENU
Starting 4 1
Starting 4 2
FOUND WORD : GNU
FOUND WORD : GE
FOUND WORD : GENE
FOUND WORD : GEE
FOUND WORD : GA
FOUND WORD : GAO
FOUND WORD : GAP
FOUND WORD : GAPE
FOUND WORD : GAPE
FOUND WORD : GAPE
FOUND WORD : GO
FOUND WORD : GOA
FOUND WORD : GE
Starting 4 3
FOUND WORD : EGO
FOUND WORD : EX
FOUND WORD : EN
FOUND WORD : ENG
FOUND WORD : EPA
Starting 4 4
FOUND WORD : EN
FOUND WORD : ENG
FOUND WORD : EM
FOUND WORD : EPA
Starting 4 5
FOUND WORD : BE
FOUND WORD : BEE
FOUND WORD : BEEN
FOUND WORD : BEEF
FOUND WORD : BEEP
FOUND WORD : BEN
FOUND WORD : BEE
FOUND WORD : BEEP
FOUND WORD : BMW
FOUND WORD : BE
FOUND WORD : BEE
FOUND WORD : BEEN
FOUND WORD : BEEF
FOUND WORD : BEEP
FOUND WORD : BP
Starting 5 1
FOUND WORD : EGO
Starting 5 2
Starting 5 3
FOUND WORD : AGE
FOUND WORD : AGEE
FOUND WORD : AGO
FOUND WORD : AGE
FOUND WORD : APE
FOUND WORD : APEX
FOUND WORD : APE
FOUND WORD : APE
Starting 5 4
FOUND WORD : PA
FOUND WORD : PAGE
FOUND WORD : PAGE
FOUND WORD : PEG
FOUND WORD : PEN
FOUND WORD : PENURY
FOUND WORD : PENURY
FOUND WORD : PEE
FOUND WORD : PEA
FOUND WORD : PEE
FOUND WORD : PEN
FOUND WORD : PENURY
FOUND WORD : PENURY
FOUND WORD : PEE
FOUND WORD : PEA
FOUND WORD : PEE
Starting 5 5
FOUND WORD : EPA
FOUND WORD : EBEN