Prolog PostFix 问题

Prolog PostFix Issue

我无法解决这个序言问题。定义一个后缀谓词,使 postfix(X,Y) 表示 X 是一个列表,它是 Y 的后缀。也就是说,X 的每个元素等于(统一)Y 的相应元素,但 Y 可能包含额外的之前的元素。

输入:

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

输出:

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

我试过了

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

谢谢!

你们其实很接近。简单多了 所以 postfix 意味着在 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);