相关疑难解决方法(0)

获得谓词解析的顺序

看看以下目标(我使用来自Markus Triska的clpfd的swi-prolog):

result(Input,Result) :-
    Input #> 10,
    Result=decline.
result(Input,Result) :-
    Input in 0..20,
    Result=offer.
Run Code Online (Sandbox Code Playgroud)

可能的查询如下所示:

?- result(15,B).
B = decline ;
B = offer.
Run Code Online (Sandbox Code Playgroud)

我想添加订单或某种解决方案优先级.如果"拒绝"是有效的响应Input=15,则不应再考虑第二个目标,因此只有B=decline解决方案而不是B=offer.

我知道我可以添加一个!/0然后反过来也行不通.给我这个谓词的所有可能答案.

考虑到这个例子,a Result=offer应该只适用于Input 0..10,否则应该触发较高的先前下降目标.

当我尝试在谓词中考虑订单时,我是否认为太迫切了?

prolog clpfd

5
推荐指数
1
解决办法
459
查看次数

标签 统计

clpfd ×1

prolog ×1