我需要写一个prolog谓词,它将计算给定列表的所有出现次数 . 我已经搜索了stackoverflow来找到一个解决方案,我发现最接近的是一个只计算第一次出现的谓词 .
我必须编写的谓词假设是这样工作的:
inde(1, [1,2,1,1,2,2,1],X) -> X=[1,3,4,7]
我正在使用的程序是这样的:
inde([3,2,1,1],1,X) -> X = 3
我将把代码粘贴到下面
inde([Element|_], Element, 1).
inde([_|Tail], Element, Ans):- inde(Tail, Element, Ans1), Ans is Ans1+1.
谁能指出我正确的方向?
1 回答
您的问题的解决方案可能是这样的:
该谓词只是检查所选元素是否是列表的第一个元素 . 如果是这样,它会在输出列表中保存元素的索引,并再次使用列表的其余部分调用相同的谓词,并将索引递增1 .