Task: I have two dimational array of chars fullfill with random values [a-z] and need to find if there is word "ala" vertilac\horizontal\diagonal anywhere in this array.
What've i done: In my programm i go through all characters and trying to find word in all dimentionals.
What i want: I feel there is more intelegent way to do this task witch will:
- Work with words of different length without correcting program
- Replase bunch of if statements so it will be easyer
Here is my current code:
Random randomGenerator = new Random();
char[][] arr = new char[50][50];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
arr[i][j] = (char) (randomGenerator.nextInt(26)+97);
}
}
System.out.println();
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
boolean ala = false;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (j>1) {
if (arr[i][j] == 'a' && arr[i][j - 1] == 'l' && arr[i][j - 2] == 'a') {//left
ala = true;
System.out.println(i + " " + j);
}
}
if (j<arr[i].length-2) {
if (arr[i][j] == 'a' && arr[i][j + 1] == 'l' && arr[i][j + 2] == 'a') {//rigth
ala = true;
System.out.println(i + " " + j);
}
}
if (i<arr.length-2) {
if (arr[i][j] == 'a' && arr[i + 1][j] == 'l' && arr[i + 2][j] == 'a') {//bot
ala = true;
System.out.println(i + " " + j);
}
}
if (i>1) {
if (arr[i][j] == 'a' && arr[i-1][j] == 'l' && arr[i - 2][j] == 'a') {//top
ala = true;
System.out.println(i + " " + j);
}
}
if (i<arr.length-2 && j<arr[i].length-2) {
if (arr[i][j] == 'a' && arr[i + 1][j + 1] == 'l' && arr[i + 2][j + 2] == 'a') {//bot&rigth
ala = true;
System.out.println(i + " " + j);
}
}
if (i>1 && j>1) {
if (arr[i][j] == 'a' && arr[i - 1][j - 1] == 'l' && arr[i - 2][j - 2] == 'a') {//top&left
ala = true;
System.out.println(i + " " + j);
}
}
if (i>1 && j<arr[i].length-2) {
if (arr[i][j] == 'a' && arr[i - 1][j + 1] == 'l' && arr[i - 2][j + 2] == 'a') {//top&rigth
ala = true;
System.out.println(i + " " + j);
}
}
if (i<arr.length-2 && j>1) {
if (arr[i][j] == 'a' && arr[i + 1][j - 1] == 'l' && arr[i + 2][j - 2] == 'a') {//bot&left
ala = true;
System.out.println(i + " " + j);
}
}
}
}
System.out.println(ala);