0

我正在编写一个应该解决 MiniZinc 中的纸牌游戏的代码。如果条件不满足,我已被要求返回一条消息“此纸牌无法解决”。

不幸的是,我在 Internet 上找不到解决此问题的方法。有谁知道我该怎么做?

4

1 回答 1

1

我不知道这样做的万无一失的版本,实际上它有点棘手。但这里有一些想法。

模型不满意时的标准响应是“=====UNSATISFIABLE=====”。您可以编写一个包装程序来将此字符串替换为“无法解决此纸牌”。这可能是我自己会做的。

该字符串可以通过程序“solns2out”(MiniZinc 工具链中的程序,该程序执行解决方案的漂亮打印)进行更改,该程序具有参数“--unsat-msg”,您可以在其中声明自己的消息。

solns2out 的参数是-据我所知-不能通过 MiniZincIDE 获得,因此您必须推出自己的工具链,因此您必须编写完整的程序链来使用它,例如

 flatzinc model.mzn -some_parameters | solver model.fzn -with_some_parameters | solns2out model.ozn --unsat-msg "This solitaire cannot be solved"

这可能会非常棘手,具体取决于您希望它有多灵活,例如您需要什么参数等。

(有时使用“minizinc”程序而不是“flatzinc”程序更容易。使用 -help 选项运行程序以查看不同的参数。)

于 2016-10-30T20:14:43.620 回答