我意识到这是非常基本的,但我无法从 Prolog 教程中解决这个问题,所以我希望这里有人可以帮助我解决我的问题。
如果以下几个条件之一适用,我有一个为真的术语:
answer -->
Var,
a([Att1],[Var1]),
a([Att2],[Var2]),
a([Att3],[Var3]),
{
[one, two, three] = [Att1, Att2, Att3] -> Var1 = Var; % first condition
[one, three, two] = [Att1, Att2, Att3] -> Var1 = Var; % second condition
[two, one, three] = [Att1, Att2, Att3] -> Var2 = Var; % third condition
[three, one, two] = [Att1, Att2, Att3] -> Var2 = Var; % fourth condition
}
所有属性和变量都有一个固定值,如果满足“{}”部分中的任何条件,我想提供“答案” - 但由于某种原因,它不起作用。问题是,如果我只检查其中一个条件,比如第一个条件,它会按预期工作。但我不想复制/粘贴规则 4 次,因为我没有得到一个合乎逻辑的“或”来正常工作。
简而言之,如果我编写了完全不同的代码,第一个条件的意思是:检查Att1是否等于one和Att2是否等于2和Att3是否等于3。如果是这种情况,还要确认Var1等于Var中的值。如果没有,请检查是否可以解决任何其他条件。
编辑:原来我只是有一个';' 代码中太多了。