0

我对prolog很陌生,现在只有最基本的 ,我遇到了问题

我需要写一个语句行:<cond.1> and (<cond.2> or <cond.3>)

在像 c++ 这样的语言中,它看起来像这样:

if(<cond.1> && (<cond.2> || <cond.3>)) { /*...*/ }

我在序言中尝试了这个:

statement(X, Y, Z, W):-condition(X,Y,Z,W), !, X <> Z or Y <> W.

和这个

statement(X, Y, Z, W):-condition(X,Y,Z,W) and (X <> Z or Y <> W).

还有更多谷歌告诉我的事情。没有任何效果,我知道这个逻辑语句在扩展形式中看起来像这样:<cond.1> and <cond.2> or <cond.1> and <cond.3>

但这会创建大量代码并使其不可读。我只是觉得必须有一种方法可以在括号内实现这些条件。但我只是不知道如何,我找不到任何方法来做到这一点。

4

1 回答 1

0

“逻辑或”用分号 ( ;) 表示。所以你的谓词可能看起来像:

statement(X, Y, Z, W) :-
    condition(X,Y,Z,W),
    (X \= Z; Y \= W).

在这里,如果\=/2谓词 [swi-doc]不能XZ(或YW)统一,则它成功。

于 2019-12-12T16:23:02.003 回答