2012-04-12 9 views
0

私はprolog.SOに完全に初心者です。 私はCctypeIntとRu1という2つのパラメータを持っています CctypeIntが0ならRu1はリスト{2,3,4}、CctypeIntが1ならばRu1はリスト{2,3,4}であり、CctypeIntは2 Ru1は1つの要素{2}のリストです。プロローグ内の3つのデフェデュータパラメータ

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 
    ),!. 

iは同じについては、以下のコードを試みました。

 (
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'されますか?印刷してみましたか? –

+0

はいその範囲...とその範囲を使用して私は正しくRu1の範囲を抽出していますが、Ru2はcctypeintとRu1の両方に依存しているので、私はロジックを書くというこの問題を抱えています。 – Vijay

答えて

0

は、たぶん私は何かが欠けていますが、これは仕事をしているように見えるでしょう:

% relation(CctypeInt, Ru1, Ru2) 

relation(1,2,[2,3,4]). 
relation(1,3,[2,3]). 
relation(1,4,2). 
relation(2,2,2). 
関連する問題