import java.util.*;
public class WordSearch {
private char[][] board;
private char defaultvalue = '-'; //just for convenience
private int rows, cols;
public WordSearch(int rows, int cols) {
this.rows = rows;
this.cols = cols;
board = new char[rows][cols];
resetBoard();
}
public WordSearch() {
this(20,20);
}
public void resetBoard() {
for (int i=0;i<rows;i++) {
for (int j=0;j<cols;j++)
board[i][j]=defaultvalue;
}
}
public boolean addWordH(int row, int col, String word) {
//check that the word fits on the board
if(row<0||col>cols||col<0||row+word.length()>rows)
return false;
for(int i=0;i<word.length();i++) {
//check that each of the spaces is valid
if(!(board[row][col+i]==defaultvalue||
board[row][col+i]==word.charAt(i)))
return false;
}
for (int i=0;i<word.length();i++)
//add the word
board[row][col+i] = word.charAt(i);
return true;
}
public boolean addWordV(int row, int col, String word){
if(row>rows||row<0||col<0||col+word.length()>cols)
return false;
for(int i=0;i<word.length();i++) {
if(!(board[row+i][col]==defaultvalue||
board[row+i][col]==word.charAt(i)))
return false;
}
for (int i=0;i<word.length();i++)
board[row+i][col] = word.charAt(i);
return true;
}
public boolean addWordD(int row, int col, String word) {
if(row<0||col<0||row+word.length()>rows||col+word.length()>cols)
return false;
for(int i=0;i<word.length();i++) {
if(!(board[row+i][col+i]==defaultvalue||
board[row+i][col+i]==word.charAt(i)))
return false;
}
for (int i=0;i<word.length();i++)
board[row+i][col+i] = word.charAt(i);
return true;
}
public String toString() {
String s="";
for (int i=0;i<board.length;i++) {
for (int j=0;j<board[i].length;j++) {
s=s+board[i][j];
}
s=s+"\n";
}
return s;
}
}