2

Java現在、 Swing/Awt を使用してグラフィカルな数独ソルバー プログラムを作成しています。そこで、ボード上のボックス (太い線でマーク) を (3x3 および 2x3 ボックスで) シェーディングすることにしました: (ソース: zitowolf.net )


(出典: zitowolf.net )


6x6 ボードと 8x8 ボード

プログラム内のボードは基本的にint[dimension][dimension]配列として表され、プログラムは 4x4 -> 16x16 の寸法のボードを受け入れます。

問題は、行または列で隣り合うボックスが同じ陰影を持たないようにすることです。GUI シェーディング プロセス自体は問題ではありませんが、シェーディング ボックスの一部として正方形をシェーディングする必要があるかどうかを判断する必要があります。

二重の for ループを使用して配列を通過するこの問題の単純なアルゴリズムを実装するために何時間も試みましたが、まだ合理的なパターンが得られておらず、アイデアがありません。これまでの私のアルゴリズムは、1 つおきのボックスが左上から右下に色付けされているという前提に基づいています。これは 6x6 バリアントでは機能しません。これは、色付きのボックス -> ホワイト ボックス -> ホワイト ボックスの順序があるためです。

ここで誰かがアルゴリズムまたは別のアプローチを提案できますか? 必要に応じて、さらに情報を提供します。とても有難い。

4

1 に答える 1

2
bool should_shade(x,y,size_x,size_y) 
//sizes are size of small box and position x,y count from 0
{
     return ( (x/size_x + y/size_y ) % 2) == 0; //division is integer division

}
于 2012-04-17T15:04:24.597 に答える