0

我意识到这是非常基本的,但我无法从 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是否等于oneAtt2是否等于2Att3是否等于3。如果是这种情况,还要确认Var1等于Var中的值。如果没有,请检查是否可以解决任何其他条件。

编辑:原来我只是有一个';' 代码中太多了。

4

0 回答 0