カードが同じタイプ (キング、クイーン、ジャック) の他のカードに隣接しないように、特定の方法でグリッド上に 6 枚のカードを配置するプログラムを作成しようとしています。グリッドは 4x4 ですが、次のパターン内にのみカードを配置できます。
[ ][ ][x][ ]
[x][x][x][ ]
[ ][x][x][x]
[ ][ ][x][ ]
さて、私の主な問題は、私の方法がカードの種類について隣接するセルをチェックしようとするときです。0,0 から始まると、[row-1][column] をチェックしようとしますが、これは -1,0 に変換されるため、明らかに機能しません。問題は、これを適切に実装する方法がわからないことです。
正確に何を検索すればよいか (またはこの問題に適切な名前を付ける方法) がわからなかったため、この質問が以前に行われた場合は申し訳ありません。
private boolean bordersCard(int row, int column, char cardChar)
{
Candidate center = board[row][column];
Candidate top;
Candidate bottom;
Candidate left;
Candidate right;
if (board[row-1][column] != null){
top = board[row+1][column];
}
else
{
top = new Candidate('?', 0);
}
if (board[row+1][column] != null){
bottom = board[row+1][column];
}
else
{
bottom = new Candidate('?', 0);
}
if (board[row][column-1] != null){
left = board[row][column-1];
}
else
{
left = new Candidate('?', 0);
}
if (board[row][column+1] != null){
right = board[row][column+1];
}
else
{
right = new Candidate('?', 0);
}
if ((center.getCardChar() == top.getCardChar()) || (center.getCardChar() == bottom.getCardChar()) ||
(center.getCardChar() == left.getCardChar()) || (center.getCardChar() == right.getCardChar())){
return false;
}
return true;
}