2012-04-12 59 views
0

我是序言中的新手。請任何人指導我正確的方式,我應該去! 我有兩個參數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的誤差在範圍0..2和無法比擬的。

+0

那麼,是'CctypeInt'一個範圍?你有試過打印嗎? – 2012-04-12 14:10:57

+0

是它的範圍...並使用該範圍我正確地提取Ru1的範圍,但因爲Ru2是依賴於cctypeint和Ru1我有這個寫邏輯的問題。 – Vijay 2012-04-12 14:15:04

回答

0

也許我失去了一些東西,但是這似乎做的工作:

% relation(CctypeInt, Ru1, Ru2) 

relation(1,2,[2,3,4]). 
relation(1,3,[2,3]). 
relation(1,4,2). 
relation(2,2,2).