3

我正在尝试在 OOD 中设计数独谜题。

一方面,在带有验证功能的矩阵中表示板似乎很便宜,该验证功能将在每次插入后激活

另一方面,用“块”表示板可能更方便:每个单元格将分配有包含它的三个块 - 列、行、正方形。此处的验证功能将根据使用多态性的块类(col/row/square)不同地实现,并且当您插入数字时,在属于单元格的每个块上激活 3 次。这种方式看起来更“OOD”,但从内存方面来说非常昂贵。

你认为哪种方式更好?有没有更好的方法是OOD但仍然便宜?

4

1 回答 1

3

如果您想制作更通用的数独求解器(还有其他形式),您可以使用:

细胞

  • 在屏幕上有一个位置
  • 可以包含属于有限字母表的符号或为空。
  • 属于一个或多个组。
  • 某些单元格具有固定值(无法更改)。
  • 每次要更改单元格时,新值必须在所有组中都有效。

通用组

  • 包含多个单元格,不超过字母表中的符号数。
  • 泛型组具有 IsValid 方法。

普通数独组

  • 如果所有非空单元格包含不同的值,IsValid 方法将返回 true。

其他数独集团

  • (您可以定义自己的 IsValid 函数)。

注意甚至可以混合不同的组类型。

于 2013-01-30T09:03:30.743 回答