如何将匹配元素的索引放入列表中?

时间:2019-10-09 21:43:32

标签: prolog swi-prolog

我刚刚开始学习序言,遇到了这个问题,我试图将匹配元素的索引从初始列表输入到新列表。例如,我有一个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]。 任何帮助表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

首先,为了将列表作为结果,您需要在谓词中添加另一个变量。

首先让我向您展示解决方案:

?- find([c],[[a],[b],[c],[d],[a,a],[b,b],[c]],1,R).

现在您应该这样称呼它:

R = [3, 7]

您将获得以下结果:

N

希望您能理解解决方案。它将当前索引存储在R中,如果当前项是您要查找的项,则将其放回8443中。

相关问题