数独谜题的面向对象设计

时间:2013-01-30 08:55:07

标签: oop

我想在OOD设计一个数独谜题。

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

另一方面,用“块”表示电路板可能更方便: 每个单元格将分配包含它的三个块 - 列,行,方形。 这里的验证函数将根据使用多态的块类(col / row / square)以不同的方式实现,当您插入时,在属于该单元的每个块上激活3次。 这种方式似乎更“OOD”,但从内存方面来看它非常昂贵。

您认为哪种方式更好? 是否有更好的方式是OOD但仍然便宜?

1 个答案:

答案 0 :(得分:3)

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

<强>细胞

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

通用群组

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

普通数独组

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

其他Sodoku集团

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

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