Prolog后缀问题

Prolog后缀问题,prolog,append,prefix,suffix,Prolog,Append,Prefix,Suffix,我解决这个序言问题有困难。定义一个后缀谓词,使后缀(X,Y)表示X是一个列表,该列表是Y的后缀。也就是说,X的每个元素等于(与)Y的相应元素,但Y在此之前可能包含其他元素 在: 输出: 我试过了 postFix(X,[]). postFix(X,Y) :- append(,X,Y), [H|T] is Y, postfix(,X,T). 谢谢 事实上,你们非常接近。太简单了 所以后缀意味着在X之前添加任何内容,这将导致Y 这就是所做的:append(前缀、后缀、列表) 例如: - postf

我解决这个序言问题有困难。定义一个后缀谓词,使后缀(X,Y)表示X是一个列表,该列表是Y的后缀。也就是说,X的每个元素等于(与)Y的相应元素,但Y在此之前可能包含其他元素

在:

输出:

我试过了

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

谢谢

事实上,你们非常接近。太简单了 所以后缀意味着在
X
之前添加任何内容,这将导致
Y

这就是所做的:
append(前缀、后缀、列表)

例如:

- 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);

到目前为止你自己都在尝试什么?添加一些输入/输出示例。我尝试过使用append(X,Y)之类的append函数。因此用户可以传递后缀(X,[1,2,3]),然后他们应该得到[];[3]; [2,3]; [1,2,3];.我试过postFix(X,[])。后缀(X,Y):-append(,X,Y),[H | T]是Y,后缀(,X,T)。很好,你从哪里得到的?什么不起作用。让我们看看你得到了什么,你在哪里被困在你的问题。我不知道如何确切地解决这个问题。但我确实评论了我目前所做的事情。我明天有期末考试,我需要学习这个。所以,如果有人能用Append函数一步一步地解释这个问题,这将非常有帮助。我试过了,但它只给出了[1,2,3]。我想看看所有可能的组合。比如[],[3],[2,3],[1,2,3]。你是如何检查的?我用预期的结果对它进行了测试。哦,我想按回车键。但现在我知道我只需要按一下“;”。明白了,谢谢你,不止你一个人:
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);