0

我正在制作(2X2)数独游戏,我需要完成一个谜题。这意味着一些数字是不可变的(它们不能被移出原位。

在 2X2 游戏中,有 16Digit秒。问题事实是rows、columns 和blocks(明白吗?)。row是唯一的计划变量。

我指定boolean fixedDigit. 但是(根据用户指南),我找不到实现它的地方。

实际上使某些规划实体不可变的方法是什么?


我发现这些方法:

  1. 实现仅在不可变时才moveFactory更改的a。row此方法未记录在案
  2. 如果row不等于 a fixed_row,则打破硬约束。
  3. 使用@ValueRangeFromPlanningProperty. 让不可变实体具有value_range单个元素,可变实体具有排除固定行的列表。对于比数独项目更大的任何东西,这似乎都是不可持续的,对吧?并且有(我的?)所谓的使求解器脱轨的陷阱?

额外的问题:方法#3 是解决时间表问题(将学科教师分配到可能的时期)的推荐方法吗?

4

1 回答 1

1

选项 4:固定数字是问题事实:没有 @PlanningEntity 注释的类的实例。非固定数字是计划实体:具有@PlanningEntity 的类的实例。

如果您想为设计目的重用同一个类:

  1. 一个自定义的 MoveFactory 将是一种方式。记录了编写自定义移动工厂:只需添加一个 if 语句来排除改变固定数字的移动。
  2. 在这种情况下,它不是内置的硬约束,而是普通的硬约束,我不建议在这个用例中这样做。请参阅有关“内置硬约束”的手册信息
  3. 矫枉过正,但它会工作:)

选项 5:https ://issues.jboss.org/browse/JBRULES-3359

于 2012-01-24T10:06:12.690 回答