计算出现次数

一世

我是Prolog的新手,并尝试使用Lists进行一些编程,
我想这样做:

?- count_occurrences([a,b,c,a,b,c,d], X).
X = [[d, 1], [c, 2], [b, 2], [a, 2]].

这是我的代码,我知道它不完整,但是我正在尝试:

count_occurrences([],[]).
count_occurrences([X|Y],A):-
   occurrences([X|Y],X,N).

occurrences([],_,0).    
occurrences([X|Y],X,N):- occurrences(Y,X,W), N is W + 1.
occurrences([X|Y],Z,N):- occurrences(Y,Z,N), X\=Z.

我的代码是错误的,所以我需要一些帮助或帮助。

帝陀·贝拉留

这是我使用bagof/3的解决方案findall/3

count_occurrences(List, Occ):-
    findall([X,L], (bagof(true,member(X,List),Xs), length(Xs,L)), Occ).

一个例子

?- count_occurrences([a,b,c,b,e,d,a,b,a], Occ).
Occ = [[a, 3], [b, 3], [c, 1], [d, 1], [e, 1]].

怎么运行的

bagof(true,member(X,List),Xs)满足对于列表中的每个独特的元素XXs是与它的长度的列表等于出现的次数XList

?- bagof(true,member(X,[a,b,c,b,e,d,a,b,a]),Xs).
X = a,
Xs = [true, true, true] ;
X = b,
Xs = [true, true, true] ;
X = c,
Xs = [true] ;
X = d,
Xs = [true] ;
X = e,
Xs = [true].

外部findall/3collects元素XXs代表解决方案的列表关联列表的长度

编辑I:由于CapelliC和Boris的建议,原始答案得到了改善。

编辑IIsetof/3可以代替findall/3给定列表是否有可用变量。问题setof/3在于,对于空列表它将失败,因此必须引入一个特殊子句。

count_occurrences([],[]).
count_occurrences(List, Occ):-
    setof([X,L], Xs^(bagof(a,member(X,List),Xs), length(Xs,L)), Occ).

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将List <Long>转换为Map <Long,Long>来计算出现次数

来自分类Dev

匹配单词列表中的单词并计算出现次数

来自分类Dev

比较两个文本文件并计算出现次数

来自分类Dev

选择不同的值,并计算出现次数

来自分类Dev

用数组计算出现次数-Java

来自分类Dev

Javascript:在数组中搜索字符串,然后计算出现次数

来自分类Dev

熊猫将列分组为列表并计算出现次数

来自分类Dev

计算出现次数和未出现的出现次数

来自分类Dev

为什么我的词典没有正确计算出现次数?

来自分类Dev

比较字符串并计算出现次数

来自分类Dev

匹配单词列表中的单词并计算出现次数

来自分类Dev

SQL:如何基于文件扩展名计算出现次数

来自分类Dev

我如何用R中的几个变量来计算出现次数

来自分类Dev

多个正则表达式的grep,并计算出现次数

来自分类Dev

awk计算出现次数,然后分成两个文件

来自分类Dev

使用Python计算出现在列表中的单词的出现次数

来自分类Dev

在特定行之后读取表格,并使用awk计算出现次数

来自分类Dev

如果JavaScript字符串以连字符开头,则计算出现次数

来自分类Dev

根据多个条件熊猫计算出现次数?

来自分类Dev

SQL:按周拆分字符串并计算出现次数

来自分类Dev

计算出现次数并与 C 中的给定数组相关联

来自分类Dev

在数据框 2 中搜索数据框 1 的值并计算出现次数

来自分类Dev

在python中编写一个函数来计算出现的次数

来自分类Dev

以 r 中的多个其他列为条件计算出现次数

来自分类Dev

按工作日在列和行中计算出现次数

来自分类Dev

在表中查找值并计算出现次数

来自分类Dev

在 PostgreSQL 上使用 DISTINCT ON 计算出现次数和结果

来自分类Dev

转置数据集并计算出现次数

来自分类Dev

根据用户定义的标准跨多列计算出现次数

Related 相关文章

  1. 1

    将List <Long>转换为Map <Long,Long>来计算出现次数

  2. 2

    匹配单词列表中的单词并计算出现次数

  3. 3

    比较两个文本文件并计算出现次数

  4. 4

    选择不同的值,并计算出现次数

  5. 5

    用数组计算出现次数-Java

  6. 6

    Javascript:在数组中搜索字符串,然后计算出现次数

  7. 7

    熊猫将列分组为列表并计算出现次数

  8. 8

    计算出现次数和未出现的出现次数

  9. 9

    为什么我的词典没有正确计算出现次数?

  10. 10

    比较字符串并计算出现次数

  11. 11

    匹配单词列表中的单词并计算出现次数

  12. 12

    SQL:如何基于文件扩展名计算出现次数

  13. 13

    我如何用R中的几个变量来计算出现次数

  14. 14

    多个正则表达式的grep,并计算出现次数

  15. 15

    awk计算出现次数,然后分成两个文件

  16. 16

    使用Python计算出现在列表中的单词的出现次数

  17. 17

    在特定行之后读取表格,并使用awk计算出现次数

  18. 18

    如果JavaScript字符串以连字符开头,则计算出现次数

  19. 19

    根据多个条件熊猫计算出现次数?

  20. 20

    SQL:按周拆分字符串并计算出现次数

  21. 21

    计算出现次数并与 C 中的给定数组相关联

  22. 22

    在数据框 2 中搜索数据框 1 的值并计算出现次数

  23. 23

    在python中编写一个函数来计算出现的次数

  24. 24

    以 r 中的多个其他列为条件计算出现次数

  25. 25

    按工作日在列和行中计算出现次数

  26. 26

    在表中查找值并计算出现次数

  27. 27

    在 PostgreSQL 上使用 DISTINCT ON 计算出现次数和结果

  28. 28

    转置数据集并计算出现次数

  29. 29

    根据用户定义的标准跨多列计算出现次数

热门标签

归档