public String displayString() {
String s = "";
for(int i = 0; i < size; i++) { // for each row
for (FutoshikiSquare[] g : grid) { // print tops of cells separated by spaces
s += "-";
for (int j = 0; j < digit; j++) {
s += "-";
}
s += "- ";
}
s += "\n";
for(int j = 0; j < size; j++) { // for each column in that row
s += "|" + grid[i][j].toString() + "|"; // print | then contents then |
if (j >= size - 1) break; // if column is not the last
if (constraints.isEmpty()) {
s += " ";
} else {
for (int k = 0; k < constraints.size(); k++) { // print horizontal constraints between that column and next
if (constraints.get(k).compares(grid[i][j],
grid[i][j+1])) {
s += constraints.get(k).get();
break;
}
if (k == constraints.size() - 1) {
s += " ";
break;
}
}
}
}
s += " \n";
// end of for each column
for (FutoshikiSquare[] g : grid) { // print bottoms of cells separated by spaces
s += "-";
for (int j = 0; j < digit; j ++) {
s += "-";
}
s += "- ";
}
s += "\n";
if(i >= size - 1) break;
for(int j = 0; j < size; j++) { // print vertical constraint between this row and next
for (int k = 0; k < digit / 2 + 1; k++) {
s += " ";
}
if (constraints.isEmpty()) {
s += " ";
} else {
for (int k = 0; k < constraints.size(); k++) {
if (constraints.get(k).compares(grid[i][j],
grid[i+1][j])) {
s += constraints.get(k).get();
break;
}
if (k == constraints.size() - 1) {
s += " ";
break;
}
}
}
if (digit % 2 == 1) {
s += " ";
}
for (int k = 0; k < digit / 2 + 1; k++) {
s += " ";
}
}
s += "\n";
}
return s;
}