2016-04-10 3 views
-1

2つのProlog関係を作成し、その定義を1つのPrologファイルに入れたいとします。関係の接頭辞と接尾辞をリストに定義します。つまり、最初の引数はそれぞれ2番目の接頭辞または接尾辞です。私は2つのProlog関係を作成し、それらの定義を1つのPrologファイルに配置したいと考えています。

?- consult(prepost). 

% prepost compiled 0.00 sec, 956 bytes 

true. 


?- prefix([a,b,c],[a,b,c,e,f]). 

true. 

?- prefix([a,b,c], [a,b,e,f]). 

false. 

?- prefix([a,b],[a]). 

false. 


?- prefix([],[a,b,c,d]). 

true. 

?- prefix(X,[a,b,c,d]). 

X = [] ; 

X = [a] ; 

X = [a, b] ; 

X = [a, b, c] ; 

X = [a, b, c, d] ; 

false. 

?- postfix([n,e],[d,o,n,e]). 
true . 

?- postfix([],[a,n,y,t,h,i,n,g]). 

true . 

?- postfix([a,b,c],[a,b,c,d,e]). 

false. 

?- postfix(X,[a,b,c,d]). 

X = [a, b, c, d] ; 

X = [b, c, d] ; 

X = [c, d] ; 

X = [d] ; 

X = [] ; 

false. 

?- 

答えて

1

述語append/3を使用すると、簡単な方法で問題を解決できます。 要素のリストは他のリストの接頭辞です。この最初のリストが関連していない(関連性のない)連結の組み合わせがあれば、完全リストになります。

prefix(Prefix_list, Full_list):- append(Prefix_list, _, Full_list). 

あなたは同じようにあなたの述語postfix/2を推測することができます、今

postfix(Postfix_list, Full_list):- append(_, Postfix_list, Full_list). 

テキストファイルに両方の述語を入れ、prepost.plという名前を付け、それはそれです。

関連する問題