3

OOD で数独パズルをデザインしようとしています。

一方では、各挿入後にアクティブ化される検証関数を使用してマトリックスに搭乗することを表すのは安っぽく見えます

一方、ボードを「ブロック」で表す方が便利な場合があります。各セルには、それを含む 3 つのブロック (列、行、正方形) が割り当てられます。ここでの検証関数は、ポリモーフィズムを使用してブロック クラス (列/行/正方形) に応じて異なる方法で実装され、セルに属する各ブロックで番号を挿入すると 3 回アクティブになります。この方法はより「OOD」に見えますが、メモリの面から見ると非常に高価です。

どの方法が良いと思いますか?OODでありながら安価な方法はありますか?

4

1 に答える 1

3

より一般的な数独ソルバー (他の形式もあります) を作成する場合は、次を使用できます。

細胞

  • 画面上の位置を持つ
  • 限定されたアルファベットに属する記号を含めることも、空にすることもできます。
  • 1 つ以上のグループに属しています。
  • 一部のセルには固定値があります (変更できません)。
  • セルが変更されるたびに、新しい値がすべてのグループで有効である必要があります。

ジェネリックグループ

  • アルファベットの記号の数を超えない数のセルを含みます。
  • 汎用グループには IsValid メソッドがあります。

通常数独グループ

  • 空でないすべてのセルに異なる値が含まれている場合、IsValid メソッドは true を返します。

その他の双独グループ

  • (独自の IsValid 関数を定義できます)。

注:異なるグループ タイプを混在させることもできます。

于 2013-01-30T09:03:30.743 に答える