Prolog PostFix问题

时间:2015-12-17 00:45:53

标签: prolog append prefix suffix

我在解决这个序言问题时遇到了麻烦。定义一个后缀谓词,以便后缀(X,Y)表示X是一个Y的后缀列表。也就是说,X的每个元素等于(统一)Y的相应元素,但Y可能包含其他元素之前的元素。

在:

postfix(X,[1,2,3]).

OUT:

[]; [3]; [2,3]; [1,2,3];

我试过

postFix(X,[]). 
postFix(X,Y) :- append(,X,Y), [H|T] is Y, postfix(,X,T).

谢谢!

1 个答案:

答案 0 :(得分:2)

你其实非常接近。这是非常简单的 因此,后缀意味着在X之前附加任何内容,这会产生Y

这是append/3的作用:append(prefix,postfix,list)

postfix(X,Y) :- append(_,X,Y).

示例:

- postfix(X,[1,2,3]).
X = [1, 2, 3] ;
X = [2, 3] ;
X = [3] ;
X = [] ;
false.

如果您想将此作为列表

postfixList(X,Y) :- findall(P,append(_,P,Y),X);