0

我是prolog中的新手。所以请任何人指导我正确的方式!我有两个参数 CctypeInt 和 Ru1,下面的关系说:如果 CctypeInt 是 0,那么 Ru1 是一个列表 {2,3,4},如果 CctypeInt 是 1,Ru1 是一个列表 {2,3,4},CctypeInt 是 2 Ru1 是具有一个元素 {2} 的列表

relation(CctypeInt,[0-{2,3,4}, 1-{2,3,4}, 2-{2}],Ru1),

这里一切正常。但还有第三个参数可以采用如下所述的值:

(
CctypeInt is 0 then Ru2 is -1
    ;CctypeInt is 1 and Ru1 is  2 then Ru2 is [2,3,4]
    ;CctypeInt is 1 and Ru1  is  3 then Ru2 is [2,3]
    ;CctypeInt is 1 and Ru1  is  4 then Ru2 is 2
    ;CctypeInt is 2 then Ru1 is 2 then Ru2 is 2
    ),!.

我尝试了以下代码。

        (
CctypeInt=:=0->Ru2 is -1
    ;CctypeInt=:=1,Ru1 =:= 2->Ru2 is [2,3,4]
    ;CctypeInt=:=1,Ru1 =:= 3->Ru2 is [2,3]
    ;CctypeInt=:=1,Ru1 =:= 4->Ru2 is 2
    ;CctypeInt=:=2->Ru1 is 2,Ru2 is 2
    ),!.

但我收到一个错误,例如 CctypeInt is a range 0..2 并且无法比较。

4

1 回答 1

0

也许我错过了一些东西,但这似乎可以完成这项工作:

% relation(CctypeInt, Ru1, Ru2)

relation(1,2,[2,3,4]).
relation(1,3,[2,3]).
relation(1,4,2).
relation(2,2,2).
于 2012-04-12T14:48:13.627 回答