我刚刚开始学习序言,遇到了这个问题,我试图将匹配元素的索引从初始列表输入到新列表。例如,我有一个Y = [[a],[b],[c],[d],[a,a],[b,b],[c]]的列表,而我正在尝试查找X = [c]的出现,并将[c]所在的索引放到新列表中。
find( X, [ X | Y ], N) :-
find(X, Y, N1), N is N1 +1.
find( X, [ H | Y ], N ) :-
find( X, Y, N).
我的N仅显示出现次数,N = 2。 但是我希望输出为N = [3,7]。 任何帮助表示赞赏。谢谢!
答案 0 :(得分:0)
首先,为了将列表作为结果,您需要在谓词中添加另一个变量。
首先让我向您展示解决方案:
?- find([c],[[a],[b],[c],[d],[a,a],[b,b],[c]],1,R).
现在您应该这样称呼它:
R = [3, 7]
您将获得以下结果:
N
希望您能理解解决方案。它将当前索引存储在R
中,如果当前项是您要查找的项,则将其放回8443
中。