特定の要素について、より大きな配列から配列要素の 3x3 ブロックをチェックする関数を作成しようとしています。
9...84.6.
..4..75.8
.3.......
3....1...
.7.5.6.4.
...4....2
.......5.
5.97..2..
.8.21...4
0 ~ 8 の番号が付けられたボックスを渡し、選択したボックス内でのみ x を探します。パズル配列は上記のようなものです。
protected static boolean box(int box, int x){
//box is a 3x3 subset of puzzle
// 012
// 345 <--- boxes numbered as such
// 678
boolean present = false;
int coordR = 0, coordC = 0;
switch (box){
case 0:
coordR = 0;
coordC = 0;
case 1:
coordR = 0;
coordC = 3;
case 2:
coordR = 0;
coordC = 6;
case 3:
coordR = 3;
coordC = 0;
case 4:
coordR = 3;
coordC = 3;
case 5:
coordR = 3;
coordC = 6;
case 6:
coordR = 6;
coordC = 0;
case 7:
coordR = 6;
coordC = 3;
case 8:
coordR = 6;
coordC = 6;
}
System.out.print("Box " + box + " -\t");
for (int i = coordR; i < 3; i++){
for (int j = coordC; j < 3; j++){
if (puzzle[i][j] == x){
present = true;
}
System.out.print(puzzle[i][j]);
}
}
System.out.println("");
return present;
}
これを行う/これを機能させるより効率的な方法はありますか?